二叉搜索树的第 k 大的节点
给定一棵二叉搜索树,请找出其中第 k 大的节点。
递归1
中序遍历所有值,得到所有数组,然后取倒数第k个
function kthLargest(root, k) { let res = []; const inorder = (root) => { if (root === null) { return; } inorder(root.left); res.push(root.val); inorder(root.right); } inorder(root); return res[res.length - k]; }
递归2
中序遍历倒序,找到最右边的节点,然后回溯
function kthLargest1(root, k) { let res = null const dfs = (root) => { if (!root) { return } dfs(root.right) if (k === 0) { return } if (--k === 0) { res = root.val } dfs(root.left) } dfs(root) return res }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 两个大数相加
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
更多
发布评论