码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-09-18 00:03:27      阅读:35      评论:0      收藏:0      [点我收藏+]

标签:返回值   二叉搜索树   pytho   val   pen   elf   range   ref   html   

技术图片
技术图片

方法一:BFS模板的应用。

总结的DFS、BFS模板参考:https://www.cnblogs.com/panweiwei/p/13065661.html

class Solution(object):
    # BFS
    def kthLargest(self, root, k):
        """
        :type root: TreeNode
        :type k: int
        :rtype: int
        """
        if not root:
            return
        res = []
        stack = [root]
        while stack:
            sizestack = len(stack)
            for i in range(sizestack):
                node = stack.pop(0)
                res.append(node.val)
                if node.left:
                    stack.append(node.left)
                if node.right:
                    stack.append(node.right)
        # 要返回的是第k大,所以降序排;若是第k小,则升序排
        res.sort(reverse=True)
        return res[k - 1]


方法二:DFS,二叉搜索树的中序遍历就是有序序列。

class Solution(object):
    # DFS:二叉搜索树的中序遍历就是有序序列。
    def kthLargest(self, root, k):
        """
        :type root: TreeNode
        :type k: int
        :rtype: int
        """
        if not root:
            return
        res = self.mid_DFS(root)
        return res[len(res) - k]

    def mid_DFS(self, root):
        # 特判:树根为空
        if not root:
            return []
        # 返回值
        res = []
        res += self.mid_DFS(root.left)
        res.append(root.val)
        res += self.mid_DFS(root.right)
        return res

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

标签:返回值   二叉搜索树   pytho   val   pen   elf   range   ref   html   

原文地址:https://www.cnblogs.com/panweiwei/p/13661834.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!