题解 | #对称的二叉树#
对称的二叉树
https://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param pRoot TreeNode类
# @return bool布尔型
#
# 主要就是判断形状,另外当进入空节点时,要对其进行判断
class Solution:
def isSymmetrical(self, pRoot: TreeNode) -> bool:
if not pRoot or (not pRoot.left and not pRoot.right):
return True
def mir(left, right):
type = 0
try:
if not right.right and left.left:
return False
except:
type += 1
try:
if not right.left and left.right:
return False
except:
type += 2
try:
if not left.left and right.right:
return False
except:
type += 4
try:
if not left.right and right.left:
return False
except:
type += 8
if not left and not right:
return True
if left.val != right.val:
return False
if (
(not left.left)
and (not left.right)
and (not right.right)
and (not right.left)
):
return True
if type == 0:
return mir(left.left, right.right) and mir(left.right, right.left)
elif type == 1:
return mir()
if (pRoot.left and not pRoot.right) or (not pRoot.left and pRoot.right):
return False
return mir(pRoot.left, pRoot.right)
