关注
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
相关推荐
07-03 14:11
广西大学 渠道销售 点赞 评论 收藏
分享
07-05 22:35
门头沟学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 校招阶段,学历VS技术哪个更重要? #
10942次浏览 133人参与
# 实习如何「偷」产出? #
31091次浏览 583人参与
# 不卡学历的大厂有哪些? #
17650次浏览 128人参与
# 除了主业以外,你还有哪些其他收入? #
7063次浏览 123人参与
# 职场新人体验 #
15492次浏览 152人参与
# 实习打杂,要跑路吗 #
13526次浏览 167人参与
# 风评不好的公司,你会去吗? #
46561次浏览 338人参与
# 校园里的破防时刻 #
7522次浏览 81人参与
# 社恐入职新公司如何融入团队 #
10955次浏览 62人参与
# 腾讯音乐求职进展汇总 #
97081次浏览 566人参与
# 面试中,你被问过哪些奇葩问题? #
70108次浏览 802人参与
# 摸鱼被leader发现了怎么办 #
60675次浏览 371人参与
# Offer比较,你最看重什么? #
190490次浏览 1296人参与
# 双非能在秋招上岸吗? #
225987次浏览 1211人参与
# 考研可以缓解求职焦虑吗 #
53476次浏览 474人参与
# 第一份工作应该选高薪还是热爱? #
78319次浏览 754人参与
# 实习时,大家都怎么称呼自己的mentor? #
43077次浏览 273人参与
# 没有合适的工作,你会先找个干着,还是考公考研 #
121333次浏览 1146人参与
# 研究所VS国企,该如何选 #
192052次浏览 1815人参与
# 金融财经春招备战日记 #
22708次浏览 135人参与