给定一棵二叉搜索树,请找出其中第 k
大的节点的值。
搜索二叉树的中序遍历为从小到大的值,反过来就是从大到小(右——根——左);
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
int res,k;
public int kthLargest(TreeNode root, int k) {
this.k = k;
disinorder(root);
return res;
}
public void disinorder(TreeNode root){
if(root == null){
return;
}
disinorder(root.right);
if(k == 0){
return;
}
if(--k == 0){
res = root.val;
}
disinorder(root.left);
}
}
执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:41 MB, 在所有 Java 提交中击败了74.16%的用户
通过测试用例:91 / 91