题目:https://www.nowcoder.com/ta/coding-interviews
请实现一个函数,用来判断一颗二叉树是不是对称的。如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
简单的考虑是:
1.比较树的根节点是否存在
2.根节点存在,则比较root.left?==root.right
3.若2成立,则针对两颗子树,判断 root1.left?==root2.right & root1.right?==root2.left,并不断重复这个过程
利用递归设计2-3(返回True或者False),在判断方法中调用
1 2 3 4 5
| class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class Solution: def isSymmetrical(self, pRoot): if not pRoot: return True return self.isSymmetricalTree(pRoot.left, pRoot.right) def isSymmetricalTree(self,root1,root2): if not root1 and not root2: return True if not root1 or not root2: return False if root1.val == root2.val: return self.isSymmetricalTree(root1.left,root2.right) and self.isSymmetricalTree(root1.right,root2.left) else: return False
|
参考:https://blog.csdn.net/u014568072/article/details/87913092
最后更新时间: