二叉搜索树的第k大节点
给定一棵二叉搜索树,请找出其中第 k 大的节点的值。
- 使用中序递归遍历二叉搜索树
- 中序遍历二叉搜索树得到的结果是有序的,将遍历结果保存到 ArrayList
- 通过下标的方式获取 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);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
2018-07-21 static 和 final 关键字 对实例变量赋初始值的影响