對稱二叉樹問題

題目:給定一個二叉樹,判定是否是對稱二叉樹。
解題:若這個棵二叉樹的先遍歷左結點再遍歷有結點和先遍歷有結點後遍歷左結點,訪問到的結點值相同(包括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);

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章