LeetCode 剑指 Offer 54. 二叉搜索树的第k大节点 (中序遍历变形)

tech2023-10-07  96

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 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

Solution

题解:按照右 根 左的顺序遍历就能得到递减的序列,与中序遍历刚好相反。 注意:

在回溯过程中,不需要中间状态的变量要使用全局变量来替换,比如这里的self.cnt self.res,如果使用backtrack(root, cnt)会出现很多问题。 class Solution: def kthLargest(self, root: TreeNode, k: int) -> int: self.res = 0 self.cnt = 0 def inOrder(root): if not root: return inOrder(root.right) self.cnt += 1 if self.cnt == k: self.res = root.val return inOrder(root.left) inOrder(root) return self.res
最新回复(0)