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
相关文章推荐
- 有一个二叉树,现在怀疑它有一个结点有2个父节点,请写出一个函数来判断该二叉树是否存在一个节点含有2个父节点。如果存在,返回true,否则返回false。
- 2个二叉树A、B,树的每个节点上都有一个整数值。如何判断A与B是否其中一个是另一个的子树?
- 【遍历二叉树】09判断二叉树是否关于自己镜像对称【Symmetric Tree】
- 有一个二叉树,现在怀疑它有一个结点有2个父节点,请写出一个函数来判断该二叉树是否存在一个节点含有2个父节点。如果存在,返回true,否则返回false。
- 找出二叉树中指定结点的下一个结点(中序后继)可以假定每个结点都有指向父节点的连接
- 如何判断二叉树是否是结构性对称的?
- 【LeetCode题目记录-11】判断二叉树是否是镜像的(对称的)
- C++ 判断一棵二叉树是否对称
- 判断一颗二叉树是否为对称二叉树
- 判断一个节点是否在一棵二叉树中&判断一颗二叉树是是否是另一颗树的子树
- Leetcode 101. Symmetric Tree 判断二叉树是否对称,注意写在两个方法中,递归时注意空的判断
- 二叉树系列 - [LeetCode] Symmetric Tree 判断二叉树是否对称,递归和非递归实现
- 判断一个节点是否在二叉树中,判断tree2是否为tree1的子树
- 面试题之对称的二叉树,层序遍历(每层节点打印成一行),平衡二叉树的判断
- leetcode之二叉树类之二叉树中序遍历运用-----OJ173/230/98/99/285 二叉树迭代器/BST第K小元素/判断BST是否合法/恢复BST/二叉树下个节点
- java实现二叉树查找,统计结点个数,统计树的深度及判断两棵树是否相等
- 【判断一个节点是否在一棵二叉树中】/【判断一颗二叉树是是否是另一颗树的子树】
- 判断一棵二叉树是否为对称的 java
- 判断一个节点是否在一棵二叉树中&&判断一颗二叉树是是否是另一颗树的子树
- LeetCode(Symmetric Tree)判断二叉树是否是对称的