题目链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/
难度:中等
描述:
给你二叉树的根节点 root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
题解
from collections import deque
# 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: TreeNode) -> List[List[int]]:
ret = []
if not root:
return ret
q = deque()
q.append(root)
while q:
size = len(q)
cur_level = []
while size > 0:
temp_node = q.popleft()
cur_level.append(temp_node.val)
if temp_node.left is not None:
q.append(temp_node.left)
if temp_node.right is not None:
q.append(temp_node.right)
size -= 1
ret.append(cur_level)
return ret
# 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: TreeNode) -> List[List[int]]:
ret = []
if not root:
return ret
def dfs(node, level):
if node is None:
return
if level >= len(ret):
ret.append([])
ret[level].append(node.val)
if node.left is not None:
dfs(node.left, level+1)
if node.right is not None:
dfs(node.right, level+1)
dfs(root, 0)
return ret