102. 二叉树的层序遍历

- 代码
python
class Solution:
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if not root: return []
res = []
queue = collections.deque()
queue.append(root)
while queue:
tmp_res = []
for _ in range(len(queue)):
node = queue.popleft()
tmp_res.append(node.val)
if node.left:queue.append(node.left)
if node.right:queue.append(node.right)
res.append(tmp_res)
return res
二、103. 二叉树的锯齿形层序遍历

- 思路:其实只需要对偶数层的结果做反转就行。
- 代码:
python
class Solution:
def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if not root:
return []
qeque = collections.deque()
qeque.append(root)
res = []
even = 0
while qeque:
tmp_res = []
for _ in range(len(qeque)):
node = qeque.popleft()
tmp_res.append(node.val)
if node.left:
qeque.append(node.left)
if node.right:
qeque.append(node.right)
even += 1
if even % 2 ==0:
res.append(tmp_res[::-1])
else:
res.append(tmp_res)
return res
三、513. 找树左下角的值

- 思路:其实就是层序遍历最后一层的第一个元素
- 代码:
python
class Solution:
def findBottomLeftValue(self, root: Optional[TreeNode]) -> int:
queue = collections.deque()
queue.append(root)
res = []
while queue:
tmp_res = []
for _ in range(len(queue)):
node = queue.popleft()
tmp_res.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
res.append(tmp_res)
return res[-1][0]