只要节点处的质量不为 0 ,其就有子树,递归走完全部输入 ~
代码如下:
只要节点处的质量不为 0 ,起就有子树,递归走完全部输入 ~
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int flag;
int judge()
{
int wl,dl,wr,dr;
scanf("%d%d%d%d",&wl,&dl,&wr,&dr);
if(wl && wr) // 两边质量都不为0,则为叶子节点
{
if(wl * dl != wr * dr) // 两边不平衡,则标记为1
{
flag = 1;
return 0;
}
else
return wl + wr;
}
else
{
if( !wl ) //只要节点不为 0,便有子树
wl = judge();
if( !wr )
wr = judge();
if(wl * dl != wr * dr)
{
flag = 1;
return 0;
}
else
return wl + wr;
}
}
int main()
{
#ifdef state
freopen("sample.txt","r",stdin);
#endif
int num;
scanf("%d",&num);
while(num--)
{
flag = 0;
judge();
if(!flag)
puts("YES");
else
puts("NO");
if(num)
puts("");
}
return 0;
}

本文介绍了一个用于判断给定树是否平衡的算法实现。通过递归方式检查每个节点的左右子树质量乘以其深度是否相等来确保整棵树的平衡状态。若不平衡则返回标记,适用于需要验证树结构平衡性的应用场景。
563

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



