1 Star 1 Fork 1

Mr_Chu/leetcode

forked from WuZe-wz/leetcode 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
二叉搜索树的第k大节点_剑指offer_54.java 1.27 KB
一键复制 编辑 原始数据 按行查看 历史
import java.util.ArrayList;
import java.util.Arrays;
/**
* @author wuze
* @desc ...
* @date 2021-03-22 13:39:48
*/
public class 二叉搜索树的第k大节点_剑指offer_54 {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
/*
思路:
1、先遍历整颗树,将节点值都放在list里面
2、遍历list,加入数组arr(使用for循环)
3、对arr排序(Arrays.sort(arr);)
4、取出第k大元素(arr[arr.length-k];)
*/
class Solution {
/*
补充:
arr.length
arrayList.size()
str.length()
*/
public int kthLargest(TreeNode root, int k) {
ArrayList<Integer> list = new ArrayList<>();
dfs(root,list);
int arr[]= new int[list.size()];
for(int i=0;i<list.size();i++){
arr[i]=list.get(i);
}
Arrays.sort(arr);
return arr[arr.length-k];
}
void dfs(TreeNode root, ArrayList<Integer> list){
if(root==null){
return ;
}
//左中右 ==> 中序遍历
dfs(root.left,list);
list.add(root.val);
dfs(root.right,list);
}
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/Mr_Chu/leetcode.git
git@gitee.com:Mr_Chu/leetcode.git
Mr_Chu
leetcode
leetcode
master

搜索帮助