54. The k-th largest node of the binary search tree (simple)

Title description:

给定一棵二叉搜索树,请找出其中第k大的节点。

示例 1:
输入: root = [3,1,4,null,2], k = 1
   3
  / \
 1   4
  \
   2
输出: 4

示例 2:
输入: root = [5,3,6,2,4,null,null,1], k = 3
       5
      / \
     3   6
    / \
   2   4
  /
 1
输出: 4
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def kthLargest(self, root, k):
        """
        :type root: TreeNode
        :type k: int
        :rtype: int
        """
        ## 注意搜索二叉树的性质
        self.res,self.k=None,k
        def dfs(node):
            if not node:
                return None
            else:
                dfs(node.right)     #先遍历右节点
                self.k -= 1
                if self.k==0:
                    self.res=node.val   #根节点
                else:
                    dfs(node.left)  #左节点
        dfs(root)
        return self.res

 

Guess you like

Origin blog.csdn.net/weixin_38664232/article/details/104996213