剑指 Offer 54. 二叉搜索树的第k大节点

剑指 Offer 54. 二叉搜索树的第k大节点

剑指 Offer 54. 二叉搜索树的第k大节点

这个题告诉我在recusive的function里,你return任何value都是没啥用的,需要用数组才能够记录下来我们需要的值。这个题也很简单,最简单的就是使用倒叙进行inorder遍历就可以了,代码如下:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def kthLargest(self, root: TreeNode, k: int) -> int:
        self.time=0
        ret=[]
        def inorder_inverse(root,k):
            if root==None:
                return 0
            inorder_inverse(root.right,k)
            self.time+=1
            if self.time==k:
                ret.append(root.val)
            inorder_inverse(root.left,k)

        inorder_inverse(root,k)
        return ret[0]