mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
Update 0101.对称二叉树.md
This commit is contained in:
@ -442,25 +442,31 @@ class Solution:
|
||||
层次遍历
|
||||
```python
|
||||
class Solution:
|
||||
def isSymmetric(self, root: Optional[TreeNode]) -> bool:
|
||||
def isSymmetric(self, root: TreeNode) -> bool:
|
||||
if not root:
|
||||
return True
|
||||
|
||||
que = [root]
|
||||
while que:
|
||||
this_level_length = len(que)
|
||||
for i in range(this_level_length // 2):
|
||||
# 要么其中一个是None但另外一个不是
|
||||
if (not que[i] and que[this_level_length - 1 - i]) or (que[i] and not que[this_level_length - 1 - i]):
|
||||
queue = collections.deque([root.left, root.right])
|
||||
|
||||
while queue:
|
||||
level_size = len(queue)
|
||||
|
||||
if level_size % 2 != 0:
|
||||
return False
|
||||
# 要么两个都不是None
|
||||
if que[i] and que[i].val != que[this_level_length - 1 - i].val:
|
||||
|
||||
level_vals = []
|
||||
for i in range(level_size):
|
||||
node = queue.popleft()
|
||||
if node:
|
||||
level_vals.append(node.val)
|
||||
queue.append(node.left)
|
||||
queue.append(node.right)
|
||||
else:
|
||||
level_vals.append(None)
|
||||
|
||||
if level_vals != level_vals[::-1]:
|
||||
return False
|
||||
for i in range(this_level_length):
|
||||
if not que[i]: continue
|
||||
que.append(que[i].left)
|
||||
que.append(que[i].right)
|
||||
que = que[this_level_length:]
|
||||
|
||||
return True
|
||||
```
|
||||
|
||||
|
Reference in New Issue
Block a user