101. 对称二叉树

例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

1

/
2 2
/ \ /
3 4 4 3

/**
 * 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) {
        return ismirroe(root,root);
    }

    bool ismirroe(TreeNode*p,TreeNode*q)
    {
        if  (!p&&!q) return true;
        if (!p||!q) return true;
        if(p->val==q->val)
            return ismirroe(p->left,q->right)&&ismirroe(p->right,q->left);
        return false;
    }
};

递归结束条件:

都为空指针则返回 true
只有一个为空则返回 false
递归过程:

判断两个指针当前节点值是否相等
判断 A 的右子树与 B 的左子树是否对称
判断 A 的左子树与 B 的右子树是否对称
短路:

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

时间复杂度:O(n)O(n)

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读