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

在这里插入图片描述
朴素想法就是反中序遍历 用list存下来 找第K个但是太麻烦
用递归思维就是反中序遍历的时候遍历到第K个直接返回

    int res = 0;
    int k;
    public int kthLargest(TreeNode root, int k) {
    
    
        this.k = k;
        disIn(root);
        return res;
    }
    void disIn(TreeNode root){
    
    //反中序遍历
        if (k < 1 || root == null) return ;//已经找到第K个
        kthLargest(root.right,k);//找到最右侧
        if (k == 1){
    
    //第K大
            res = root.val;
        }
        k--;//遍历的元素个数
        kthLargest(root.left,k);
    }

猜你喜欢

转载自blog.csdn.net/qq_43434328/article/details/115148900