只要节点处的质量不为 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;
}