剑指offer- python实现

面试题28: 对称的二叉树

2020-03-15  本文已影响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)

提交结果:

上一篇 下一篇

猜你喜欢

热点阅读