关注
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");
}
}
}
不知道到底哪不对 一直是0
查看原帖
点赞 评论
相关推荐
10-17 09:48
中国科学院大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你的mentor是什么样的人? #
13100次浏览 98人参与
# 牛友的志愿填报指南 #
33812次浏览 181人参与
# 快手技术岗信息交流阵地 #
279次浏览 2人参与
# 怎么给家人解释你的工作? #
8607次浏览 61人参与
# 求职中的尴尬瞬间 #
2212次浏览 31人参与
# 帮我看看,领导说这话什么意思? #
16841次浏览 91人参与
# 求职低谷期你是怎么度过的 #
10960次浏览 222人参与
# 26届秋招公司红黑榜 #
25139次浏览 94人参与
# 从哪些方向判断这个offer值不值得去? #
14045次浏览 169人参与
# 校招泡的最久的公司是哪家? #
10753次浏览 71人参与
# 你觉得mentor喜欢什么样的实习生 #
15019次浏览 398人参与
# 机械人集合!你是什么工程师? #
19403次浏览 91人参与
# 度小满求职进展汇总 #
11960次浏览 64人参与
# 牛客树洞,我想对你说 #
5251次浏览 74人参与
# 国企还是互联网,你怎么选? #
168051次浏览 1203人参与
# 得物app工作体验 #
27347次浏览 63人参与
# 面试紧张时你会有什么表现? #
3278次浏览 37人参与
# 没有家庭托举的我是怎么找工作的 #
17758次浏览 209人参与
# 打工人的工作餐日常 #
69995次浏览 507人参与
# 小红书求职进展汇总 #
122651次浏览 958人参与
# 实习必须要去大厂吗? #
149604次浏览 1555人参与
查看16道真题和解析

字节跳动公司福利 1292人发布