二叉搜索树的第k大节点

给定一棵二叉搜索树,请找出其中第 k 大的节点的值。

  1. 使用中序递归遍历二叉搜索树
  2. 中序遍历二叉搜索树得到的结果是有序的,将遍历结果保存到 ArrayList
  3. 通过下标的方式获取 ArrayList 第 k 大节点
class Solution {
    public int kthLargest(TreeNode root, int k) {
        List<Integer> valList = new ArrayList<>(k);
        inOrder(root, valList);
        //valList 从小到大有序
        return valList.get(valList.size() - k);
    }

    //中序递归遍历 二叉搜索树
    private void inOrder(TreeNode root, List<Integer> valList) {
        if (root == null) {
            //递归遍历退出条件
            return;
        }

        //先遍历节点的左子树
        inOrder(root.left, valList);
        //访问节点
        valList.add(root.val);
        //再遍历节点的右子树
        inOrder(root.right, valList);
    }    
}
posted @ 2023-07-21 22:42  大熊猫同学  阅读(17)  评论(0编辑  收藏  举报