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