二叉搜索树的第k大节点

作者: _阿南_ | 来源:发表于2020-02-25 18:27 被阅读0次

    题目:

    给定一棵二叉搜索树,请找出其中第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
    限制:
    1 ≤ k ≤ 二叉搜索树元素个数
    

    题目的理解:

    遍历二叉树,获取到所有的值后,倒序排列,获取k-1的值。

    python实现

    # 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:
            nums = list()
    
            self.recursion(nums, root)
    
            nums.sort(reverse=True)
    
            return nums[k-1]
    
        def recursion(self, nums: list, node: TreeNode):
            if node is None:
                return
    
            nums.append(node.val)
    
            if node.left is not None:
                self.recursion(nums, node.left)
    
            if node.right is not None:
                self.recursion(nums, node.right)
    

    提交

    成功

    // END 忙碌一天,仅仅出门寄个快递和买个菜,感觉经历千山万水

    相关文章

      网友评论

        本文标题:二叉搜索树的第k大节点

        本文链接:https://www.haomeiwen.com/subject/facfchtx.html