码迷,mamicode.com
首页 > 编程语言 > 详细

剑指Offer-58.对称的二叉树(C++/Java)

时间:2019-12-29 15:20:56      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:span   函数   OLE   col   src   树的镜像   ica   color   同比   

题目:

请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

分析:

从根结点开始递归对比左右子树即可。需要注意的是,当前左右两个结点相同比较下面的结点时,由于是判断二叉树是否是对称的,递归执行时,比较的两个结点是当前左结点的左结点和当前右结点的右结点去比较,这样才是对称的。

技术图片             技术图片

程序:

C++

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

};

Java

public class Solution {
    boolean isSymmetrical(TreeNode pRoot)
    {
        if(pRoot == null)
            return true;
        return isSame(pRoot.left, pRoot.right);
    }
    boolean isSame(TreeNode p1, TreeNode p2){
        if(p1 == null && p2 == null)
            return true;
        if(p1 == null || p2 == null)
            return false;
        if(p1.val != p2.val)
            return false;
        return isSame(p1.left, p2.right) && isSame(p1.right, p2.left);
    }
}

剑指Offer-58.对称的二叉树(C++/Java)

标签:span   函数   OLE   col   src   树的镜像   ica   color   同比   

原文地址:https://www.cnblogs.com/silentteller/p/12114934.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!