python - 检查一棵树是否是一面镜子
问题描述
你好我有一个代码来检查一棵树是否是镜像树。但是它并没有通过 leetcode 上的所有测试用例。
我在网上查看了其他资源,但似乎无法找出我的代码中的错误。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def isSymmetric(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
if root is None:
return True
if root.left and root.right:
return self.is_symmetric(root.left,root.right)
def is_symmetric(self, left, right):
if (left == None and right == None):
return True
if right is None or left is None:
return False
if left.val == right.val:
return True
return self.is_symmetric(left.left,right.right) and self.is_symmetric(left.right,right.left)
谢谢!
解决方案
当检查的条件root.left and root.right
是False
时,您的isSymmetric
函数会隐式返回None
。相反,它应该继续检查是否其中之一root.left
,在这种情况下它应该返回;否则两者和都是,它应该返回。另外,在函数中,这并不意味着左子树与右子树对称,因为它们下面可能有更多的子树。它应该在以下情况下简单地返回:root.right
None
False
root.left
root.right
None
True
is_symmetric
left.val == right.val
False
left.val != right.val
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def isSymmetric(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
if root is None:
return True
if root.left and root.right:
return self.is_symmetric(root.left,root.right)
if root.left or root.right:
return False
return True
def is_symmetric(self, left, right):
if left is None and right is None:
return True
if right is None or left is None or left.val != right.val:
return False
return self.is_symmetric(left.left, right.right) and self.is_symmetric(left.right, right.left)
推荐阅读
- c++ - 改进了特定排序序列的交集
- c# - JSON.NET 如何设置只获取的 IEnumerable
财产? - xml - 通过使用 XPath 定义的规则选择 XML 节点
- css - Angular 11 - 如何使用 Angular Material 设置文件输入按钮的样式
- html - 如何创建一个网页来捕捉用户在手机和露营者中的摄像头?
- python - RichTextUploadingField 不保存 html 标签
- r - 如何在 r markdown 中将封面添加到 .pdf?以及如何自定义目录?
- php - 如何修复“处理请求错误错误文本:错误(拒绝)”单击按钮更新时phpmyadmin中没有错误代码
- javascript - 如何检测用户在 Javascript 中输入表情符号、特殊/外来字符和其他输入 - 没有 keyup 事件?
- flutter - 为什么手势检测器在点击此容器时不起作用?