0
点赞
收藏
分享

微信扫一扫

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


题目链接:​​点击打开链接​​

题目大意:

解题思路:

相关企业

  • 字节跳动

AC 代码

  • Java
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/

class Solution {

int th;

List<Integer> list = new ArrayList<>();

public int kthLargest(TreeNode root, int k) {
th = k;
dfs(root);
return list.get(k - 1);
}

void dfs(TreeNode node) {

if (node == null || list.size() == th) {
return;
}

dfs(node.right);
list.add(node.val);
dfs(node.left);
}
}
  • C++
class Solution {
public:
int kthLargest(TreeNode* root, int k) {
this->k = k;
dfs(root);
return res;
}
private:
int res, k;
void dfs(TreeNode* root) {
if(root == nullptr) return;
dfs(root->right);
if(k == 0) return;
if(--k == 0) res = root->val;
dfs(root->left);
}
};


举报

相关推荐

0 条评论