题目:给定一个二叉树,判定是否是对称二叉树。
解题:若这个棵二叉树的先遍历左结点再遍历有结点和先遍历有结点后遍历左结点,访问到的结点值相同(包括null结点),则表明这个树为对称二叉树。
代码如下:
#include “iostream”
using namespace std;
bool isSymmetrical(TreeNode*pRoot)
{
return isSymmetrical(pRoot, pRoot);
}
bool isSymmetrical(TreeNode*pRoot1, TreeNode*pRoot2)
{
if (pRoot1==NULL&&pRoot2==NULL)
{
return true;
}
if (pRoot1==NULL||pRoot2==NULL)
{
return false;
}
if (pRoot1->value!=pRoot2->value)
{
return false;
}
return isSymmetrical(pRoot1->left, pRoot2->right) && isSymmetrical(pRoot1->right, pRoot2->left);
}