美文网首页
【BFS+DFS】102--层序遍历

【BFS+DFS】102--层序遍历

作者: 何几时 | 来源:发表于2021-07-10 16:18 被阅读0次

首先对于BFS

重点:对队列的使用,一般是两个循环

# 队列不为空
while len(q) > 0:
  size = len(q)
  # 每层节点数量不为空
  while size > 0:
    # 实际操作
    # 添加队列
    size -= 1

实际代码如下,要多练:


对于DFS解法,这个题解解决了如何知道遍历到第几层!

具体操作:我们已知root是第一层,设置0层 level = 0,每次递归进去把 level + 1 放进参数表

# 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]]:
        if root is None:
            return []
        retList = []

        self.dfs(root, retList, 0)
        return retList
    
    def dfs(self, root, retList, level):
        # 实际操作
        ## 当 retList 长度不够时,append一个[]
        if len(retList) < level + 1:
            retList.append([])
        ## 把节点元素放进对应的子列表中
        retList[level].append(root.val)


        # 终止条件
        if root.left is None and root.right is None:
            return


        # 递归拆解
        if root.left is not None:
            self.dfs(root.left, retList, level+1)
        
        if root.right is not None:
            self.dfs(root.right, retList, level+1)

相关文章

网友评论

      本文标题:【BFS+DFS】102--层序遍历

      本文链接:https://www.haomeiwen.com/subject/ozvcpltx.html