首页 > 其他 > 详细

[LeetCode] 101. 对称二叉树

时间:2020-01-03 12:58:50      阅读:76      评论:0      收藏:0      [点我收藏+]

题目描述

给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [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、根节点相同
2、每个树的右子树与另一个树的左子树镜像

代码实现 C++

树节点定义

struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};

 

递归写法

bool isSymmetric(TreeNode* root) {
    return isMirror(root, root); 
}

bool isMirror(TreeNode* t1, TreeNode* t2) {
    if(NUll == t1 && NULL == t2) return true;
    if(NULL == t1 || NULL == t2) return false;
    if(t1->val == t2->val) 
    return isMirror(t1->left, t2->right) &&
            isMirror(t1->right, t2->left);
    else 
        return false;
}

[LeetCode] 101. 对称二叉树

原文:https://www.cnblogs.com/jcxioo/p/101dui-cheng-er-cha-shu.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!