题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
这题还是蛮简单的。
//对称二叉树
#include <iostream>
using namespace std;
struct treenode {
int val;
struct treenode *left;
struct treenode *right;
treenode(int x) :
val(x), left(null), right(null) {
}
};
bool issymmetrical(treenode* proot1,treenode* proot2)
{
if(proot1==null&&proot2==null)
return true;
if(proot1==null^proot2==null)
return false;
if(proot1->val!=proot2->val)
return false;
else
return issymmetrical(proot1->left,proot2->right)&&issymmetrical(proot1->right,proot2->left);
}
bool issymmetrical(treenode* proot)
{
if(proot==null)
return true;
if(proot->left==null&&proot->right==null)
return true;
if(proot->left==null^proot->right==null)
return false;
return issymmetrical(proot->left,proot->right);
}
void main()
{
treenode no1(1),no2(2),no3(2),no4(3),no5(4),no6(4),no7(5),no8(5),no9(5);
no1.left=&no2;
no1.right=&no3;
no2.left=&no4;
no2.right=&no5;
no3.left=&no6;
no3.right=&no7;
no6.left=&no9;
no5.right=&no8;
cout<<issymmetrical(&no1);
system("pause");
}