二叉搜索树的第k大节点
解题思路:dfs+逆中序
-
按照右->根->左的顺序(中序遍历倒序)遍历二叉树;
-
当结果数组长度大于 k 停止递归,提前返回;
复杂度:
-
时间复杂度:O(N),当树退化为链表时(全部为右子节点),无论 k 的值大小,递归深度都为 N;
-
空间复杂度:O(N),当树退化为链表时(全部为右子节点),系统使用 O(N) 大小的栈空间;
代码实现:
function kthLargest(root: TreeNode | null, k: number): number {
function dfs(root: TreeNode) {
if (root === null) return;
if (k < res.length) return;
dfs(root.right);
res.push(root.val);
dfs(root.left);
}
let res: Array<number> = [];
dfs(root);
return res[k - 1];
};
leetcode🧑💻 113. 路径总和 II
上一篇