1 题目
二叉树的层次输出。
2 思想
这题的常见方法是用bfs写,但是有时候冷不丁面试官让你搞个dfs版,所以这里用dfs实现一下。不过同样需要借助额为空间。
3 代码
# 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
from collections import defaultdict
class Solution:
    def levelOrder(self, root: TreeNode) -> List[List[int]]:
        if root is None:
            return []
        res = defaultdict(list)
        self.dfs(root,0,res) # 高度初始为0
        return [ val for key,val in res.items()]            
    # height 表示当前节点的高度
    def dfs(self,root,height,res):
        # 放入值
        res[height].append(root.val) 
        if root.left is not None:
            self.dfs(root.left,height+1,res)
        
        if root.right is not None:
            self.dfs(root.right,height+1,res)                
                









