“给你一个二叉树的根节点 root , 检查它是否轴对称。”
https://assets.leetcode.com/uploads/2021/02/19/symtree1.jpg
输入:root = 1 2 2 3 4 4 3
输出:true
https://assets.leetcode.com/uploads/2021/02/19/symtree2.jpg
输入:root = 1 2 2 null 3 null 3
输出:false
class Node(object):
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution(object):
def isSymmetric(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
def helper(root):
queue = [root]
while queue:
length = len(queue)
cur_list = []
for i in range(length): //存储每层
cur = queue.pop(0)
if cur == None:
cur_list.append(10001)
else:
cur_list.append(cur.val)
if cur.left != None and cur.right != None:
queue.append(cur.left)
queue.append(cur.right)
if len(cur_list) > 1: //判断每层是否对称
while cur_list:
first = cur_list.pop(0)
last = cur_list.pop(-1)
if first != last:
return False
return True
return helper(root)
if cur.left != None and cur.right != None:
应该分成两次判断,
if cur.left != None:
queue.append(cur.left)
if cur.right != None:
queue.append(cur.right)
if cur != None:上面的else就已经是了
我知道问题是什么了,if cur.left != None and cur.right != None: 此行应为if cur != None:,但不清楚为什么