给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。
class Solution {
List<Integer> list=new ArrayList();//存放所有元素方便后面放到数组里面
public int findSecondMinimumValue(TreeNode root) {
/**
dfs把所有节点都加入到数组里面,对数组排序,返回倒数第二大的
*/
dfs(root);
Integer [] arr2=list.toArray(new Integer[list.size()]);//先把集合转为Integer[]
int [] arr=Arrays.stream(arr2).mapToInt(Integer::valueOf).toArray();//吧Integer[]转为int[]
Arrays.sort(arr);
for(int i=0;i<arr.length-1;i++){
if(arr[i]<arr[i+1]){
return arr[i+1];
}
}
return -1;
}
public void dfs(TreeNode node){
if(node==null){
return ;
}
list.add(node.val);
dfs(node.left);
dfs(node.right);
}
}
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有