Update 0102.二叉树的层序遍历.md

This commit is contained in:
jianghongcheng
2023-05-03 20:01:07 -05:00
committed by GitHub
parent 42f85c8a8f
commit 52092d0153

View File

@ -835,35 +835,35 @@ public:
python代码
```python
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def rightSideView(self, root: TreeNode) -> List[int]:
if not root:
return []
# deque来自collections模块不在力扣平台时需要手动写入
# 'from collections import deque' 导入
# deque相比list的好处是list的pop(0)是O(n)复杂度deque的popleft()是O(1)复杂度
queue = collections.deque([root])
right_view = []
quene = deque([root])
out_list = []
while queue:
level_size = len(queue)
while quene:
# 每次都取最后一个node就可以了
node = quene[-1]
out_list.append(node.val)
for i in range(level_size):
node = queue.popleft()
if i == level_size - 1:
right_view.append(node.val)
# 执行这个遍历的目的是获取下一层所有的node
for _ in range(len(quene)):
node = quene.popleft()
if node.left:
quene.append(node.left)
queue.append(node.left)
if node.right:
quene.append(node.right)
queue.append(node.right)
return out_list
# 执行用时36 ms, 在所有 Python3 提交中击败了89.47%的用户
# 内存消耗14.6 MB, 在所有 Python3 提交中击败了96.65%的用户
return right_view
```