递归判断,若有不平衡,标记flag,平衡则返回左右子树重量和。
#include<stdio.h>
int flag;
int isBalanced() {
int wl, dl, wr, dr;
scanf("%d%d%d%d", &wl, &dl, &wr, &dr);
if (!wl)
wl = isBalanced();
if (!wr)
wr = isBalanced();
if (wl * dl != wr * dr) {
flag = 0;
return 0;
} else {
return wl + wr;
}
}
int main() {
int cases;
scanf("%d", &cases);
while (cases--) {
flag = 1;
isBalanced();
if (flag)
printf("YES\n");
else
printf("NO\n");
if (cases)
printf("\n");
}
return 0;
}
本文介绍了一种使用递归方法来判断树结构是否平衡,并计算平衡状态下左右子树重量的方法。通过输入节点数和节点权重,程序能够输出平衡状态的子树总重量或标记不平衡。
115

被折叠的 条评论
为什么被折叠?



