二叉树,若其与自己的镜像完全相同,就称其为镜像树。
是一棵镜像树;
而
不是镜像树。
现给你一棵二叉树,请你判断其是不是镜像树。
二叉树,若其与自己的镜像完全相同,就称其为镜像树。
是一棵镜像树;
而
不是镜像树。
现给你一棵二叉树,请你判断其是不是镜像树。
2
7
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
Yes
No
1 #include <iostream> 2 using namespace std; 3 bool flag=1; 4 struct node 5 { 6 int data; 7 int lchild,rchild; 8 9 }t[150]; 10 void dfs(int r1,int r2) 11 { 12 if(r1==0&&r2==0) 13 return ; 14 else if(r1==0&&r2!=0||r1!=0&&r2==0||t[r1].data!=t[r2].data) 15 { 16 flag=0; 17 return ; 18 } 19 dfs(t[r1].lchild,t[r2].rchild); 20 dfs(t[r1].rchild,t[r2].lchild); 21 } 22 int main() 23 { 24 int i,j,T,n; 25 cin>>T; 26 while(T--) 27 { 28 cin>>n; 29 for(i=1;i<=n;i++) 30 { 31 int k; 32 cin>>k; 33 cin>>t[i].lchild>>t[i].rchild; 34 } 35 for(i=1;i<=n;i++) 36 cin>>t[i].data; 37 flag=1; 38 dfs(t[1].lchild,t[1].rchild); 39 if(flag) 40 cout<<"Yes"<<endl; 41 else 42 cout<<"No"<<endl; 43 } 44 }
原文:http://www.cnblogs.com/wangmengmeng/p/5271845.html