1. 程式人生 > >劍指offer 面試題28:對稱的二叉樹 c++

劍指offer 面試題28:對稱的二叉樹 c++

題目:請實現一個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果一個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。(要想象一下他的結構)

思路:遞迴判斷,左子樹的左子樹和右子樹的右子樹比較,左子樹的右子樹和右子樹的左子樹比較,若相等則是,否則不是。

class Solution {
public:
    bool isSym(TreeNode* left,TreeNode *right)
    {
        if(right==nullptr && left==nullptr) return true;
        if(right==nullptr || left==nullptr) return false;
        return isSym(left->left,right->right) &&isSym(left->right,right->left)
            && (left->val == right->val);
    }
    bool isSymmetrical(TreeNode* pRoot)
    {
        if (pRoot==nullptr) return true;
        return isSym(pRoot->left,pRoot->right);
    }

};