LCOF劍指offer--面試題28. 對稱的二叉樹

請實現一個函數,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的鏡像一樣,那麼它是對稱的。

例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。

    1
   / \
  2   2
 / \ / \
3  4 4  3

但是下面這個 [1,2,2,null,3,null,3] 則不是鏡像對稱的:

    1
   / \
  2   2
   \   \
   3    3

示例 1:

輸入:root = [1,2,2,3,4,4,3]
輸出:true

示例 2:

輸入:root = [1,2,2,null,3,null,3]
輸出:false

限制:

0 <= 節點個數 <= 1000

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/dui-cheng-de-er-cha-shu-lcof
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
分析:
遞歸,或者使用隊列
解答:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool isSymmetric(TreeNode* root) {
        if(root==NULL) return true;

        return ismirror(root->left, root->right);
    }

    bool ismirror(TreeNode* L, TreeNode* R){
        if(L==NULL&&R==NULL) return true;

        if(L==NULL||R==NULL) return false;

        if(L->val!=R->val) return false;

        return ismirror(L->left,R->right)&&ismirror(L->right,R->left);
    }


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