Problem: 102. 二叉树的层序遍历
文章目录
- 思路
- 解题方法
- 复杂度
- Code
思路
层序遍历,广度优先搜索,只是不能用队列很烦。
解题方法
用列表模拟了队列。
复杂度
时间复杂度:
添加时间复杂度, 示例:
空间复杂度:
添加空间复杂度, 示例:
Code
# 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 levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if not root:
return []
q = []
q.append([root, 1])
now, all = 0, 1
ans = []
note = []
now_ceng = 1
while now < all:
node, ceng = q[now]
if ceng == now_ceng:
note.append(node.val)
else:
ans.append(note)
note = [node.val]
now_ceng = ceng
if node.left:
q.append([node.left, ceng + 1])
all += 1
if node.right:
q.append([node.right, ceng + 1])
all += 1
now += 1
if note:
ans.append(note)
return ans