Appearance
54.二叉搜索树的第k大节点
给定一棵二叉搜索树,请找出其中第 k
大的节点的值。
class Solution {
public int ans,k;
public int kthLargest(TreeNode root, int k) {
this.k = k;
dfs(root);
return ans;
}
public void dfs(TreeNode root){
if(root == null) return;
// 第k大 则说明要从右边开始遍历
dfs(root.right);
// 每次遍历都进行判断,当已经找到结果后,后续的遍历都直接返回
if(k == 0) return;
// 每次都-1,并判断是否是要找的值,如果是存储起来
if(--k == 0) ans = root.val;
// 遍历完右边,再遍历左边
dfs(root.left);
}
}