您的位置:首页 > 其它

J 判断二叉树每个结点的权值是否关于根节点完全对称

2015-05-25 16:50 232 查看

如果二叉树每个结点的权值关于根节点完全对称 就输出Yes

Sample Input

2
7 //结点
1 2 3 //结点1的左孩子是结点2 右孩子是结点3
2 4 5
3 6 7
4 0 0
5 0 0
6 0 0
7 0 0
1 2 2 3 4 4 3 //权值
5
1 2 3
2 0 4
3 0 5
4 0 0
5 0 0
1 2 2 3 3

Sample Output

Yes
No

 

# include <cstdio>
# include <cstring>
# define LL long long
using namespace std ;

bool flag  ;

struct tree
{
int lson ;
int rson ;
int num ;
int id ;
}t[120];

void dfs(int r1 , int r2)
{
if (r1 == 0 && r2 == 0)
return ;
if (r1 == 0 && r2 != 0 || r1 != 0 && r2 == 0 || t[r1].num != t[r2].num)
{
flag = 0 ;
return ;
}
if (!flag)
return ;
dfs(t[r1].lson , t[r2].rson) ;
dfs(t[r1].rson , t[r2].lson) ;
}

int main ()
{
// freopen("in.txt","r",stdin) ;
int T ;
scanf("%d" , &T) ;
while (T--)
{
int n ;
scanf("%d" , &n) ;
int i ;
int a ,b ,c ;
for (i = 1 ; i <= n ;i++)
{
scanf("%d %d %d" , &a , &b , &c) ;
t[a].lson = b ;
t[a].rson = c ;
}
for (i = 1 ; i <= n ;i++)
scanf("%d" , &t[i].num) ;
flag = 1 ;

dfs(t[1].lson , t[1].rson) ;
if (flag)
printf("Yes\n") ;
else
printf("No\n") ;
}

return 0 ;
}
View Code

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐