美文网首页剑指offer- python实现
面试题28: 对称的二叉树

面试题28: 对称的二叉树

作者: 不会编程的程序猿甲 | 来源:发表于2020-03-15 00:08 被阅读0次

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

    解题思路:
    这道题可以建立在面试题27的基础上,需要判断一个树和其镜像是否相同,如果相同即为对称,可以一个先序遍历一个中右左顺序遍历,然后判断这两个节点是否相同,具体如下:

    28 对称的二叉树.png

    代码实现:

    # -*- coding:utf-8 -*-
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    class Solution:
        def isSymmetrical(self, pRoot):
            # write code here
            return self.IsSymmetricalCore(pRoot,pRoot)
        def IsSymmetricalCore(self, pRoot1, pRoot2):
            if pRoot1==None and pRoot2 ==None:
                return True
            if pRoot1 ==None or pRoot2 ==None:
                return False
            if pRoot1.val != pRoot2.val:
                return False
            else:
                return self.IsSymmetricalCore(pRoot1.left,pRoot2.right) and self.IsSymmetricalCore(pRoot1.right,pRoot2.left)
    

    提交结果:

    相关文章

      网友评论

        本文标题:面试题28: 对称的二叉树

        本文链接:https://www.haomeiwen.com/subject/kkrashtx.html