关注
public class TreeNode {
//树节点的结构
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
left = null;
right = null;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int T = in.nextInt();
for (int i = 0; i < T; i++) {
int N = in.nextInt();
//先把每个节点存在数组tree中
TreeNode[] tree = new TreeNode[N];
int[] val = new int[N];
int[] left = new int[N];
int[] right = new int[N];
int[] root = new int[N];
for (int j = 0; j < N; j++) {
val[j] = in.nextInt();
tree[j] = new TreeNode(val[j]);
left[j] = in.nextInt();
right[j] = in.nextInt();
}
//添加节点的左右子节点,同时记录哪些点是有父节点的,有父节点的把root数组的相应位置标记为1
for (int j = 0; j < N; j++) {
if (left[j] != -1) {
tree[j].left = tree[left[j]];
root[left[j]] = 1;
}
if (right[j] != -1) {
tree[j].right = tree[right[j]];
root[right[j]] = 1;
}
}
//广度优先搜索
Queue<TreeNode> q = new LinkedList<TreeNode>();
//根节点一定不是任何节点的左右子节点,所以root数组中为0的那个节点就是根结点
for (int j = 0; j < N; j++) {
if (root[j] == 0) {
q.add(tree[j]);
break;
}
}
//presum记录上一层的和,sum记录下一层的和
int presum = -1;
boolean flag = true;
while (!q.isEmpty()) {
int size = q.size();//size记录当前层有多少个节点
int index = 0;//index记录当前层有多少个节点已经搜索过了
int sum = 0;//记录当前层节点的权值之和
while (index < size) {
TreeNode tmp = q.poll();
sum += tmp.val;
index++;
if (tmp.left != null)
q.add(tmp.left);
if (tmp.right != null)
q.add(tmp.right);
}
if (presum == -1) {
presum = sum;//第一层时presum为-1,令他等于当前层的结果
} else if (presum > sum) {//不为第一层时比较当前层和上一层的和是否满足递增,不满足则退出循环输出NO
flag = false;
break;
}
}
if (flag)
System.out.println("YES");
else
System.out.println("NO");
}
}
}
查看原帖
点赞 5
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 我的秋招“寄”录 #
19793次浏览 220人参与
# 你最近一次加班是什么时候? #
73977次浏览 388人参与
# 去哪儿旅行秋招 #
224495次浏览 3176人参与
# 实习的内耗时刻 #
21236次浏览 295人参与
# 我的AI电子员工 #
10473次浏览 74人参与
# 独居后,你的生活是更好了还是更差了? #
7361次浏览 110人参与
# 腾讯大前端岗位热招中 #
15578次浏览 175人参与
# 牛友打假中心 #
96426次浏览 2679人参与
# 大城市找工作会更容易吗 #
43981次浏览 351人参与
# 学历贬值真的很严重吗? #
31853次浏览 208人参与
# 规定下班时间vs实际下班时间 #
12684次浏览 110人参与
# 你上一次给父母打电话是什么时候 #
8100次浏览 85人参与
# 每个月的工资都是怎么分配的? #
59915次浏览 597人参与
# 工作上你捅过哪些篓子? #
10075次浏览 74人参与
# 秋招盘点:机械人值得去的企业 #
79273次浏览 680人参与
# 秋招签约后的心态变化 #
87525次浏览 836人参与
# 你觉得找工作该拿大厂还是小厂练手 #
199975次浏览 1757人参与
# 被AI治愈的瞬间 #
64154次浏览 634人参与
# 奇葩时刻大赏 #
57408次浏览 237人参与
# 面试被问期望薪资时该如何回答 #
268663次浏览 1547人参与
# 生化医药面经大本营 #
122060次浏览 483人参与
# 秋招想进国企该如何准备 #
81666次浏览 444人参与