二叉搜索树的第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 @   大熊猫同学  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
历史上的今天:
2018-07-21 static 和 final 关键字 对实例变量赋初始值的影响
点击右上角即可分享
微信分享提示