Leetcode101. 对称二叉树

解题方案

思路

递归结束条件:

  • 都为空指针则返回 true
  • 只有一个为空则返回 false
  • 递归过程:
  • 判断两个指针当前节点值是否相等
  • 判断 A 的右子树与 B 的左子树是否对称
  • 判断 A 的左子树与 B 的右子树是否对称
  • 短路:

    在递归判断过程中存在短路现象,也就是做  操作时,如果前面的值返回 false 则后面的不再进行计算

    时间复杂度:O(n)

  • class Solution {
    private:
        bool isMirror(TreeNode* t1,TreeNode* t2)
        {
            if(t1==NULL && t2==NULL) return true;
            if((t1==NULL && t2)|| (t2==NULL && t1)) return false;
            return (t1->val==t2->val)&&isMirror(t1->right,t2->left)&&isMirror(t1->left,t2->right);
        }
    public:
        bool isSymmetric(TreeNode* root) {
            if(root==NULL) return true;
            return isMirror(root->left,root->right);
        }
    };

    方法二:迭代

posted @ 2019-12-03 21:45  任仁人  阅读(100)  评论(0编辑  收藏  举报