用Python写出二叉树的层序遍历递归算法并进行详细解释
时间: 2023-04-05 12:05:02 浏览: 111
好的,我可以回答这个问题。二叉树的层序遍历递归算法可以通过队列来实现。具体步骤如下:
1. 首先将根节点入队。
2. 然后进入循环,直到队列为空。
3. 在循环中,首先将队头元素出队,并将其值输出。
4. 然后将队头元素的左右子节点(如果存在)入队。
5. 重复步骤3-4,直到队列为空。
下面是Python代码实现:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def levelOrder(root: TreeNode) -> List[List[int]]:
res = []
if not root:
return res
def dfs(node, level):
if len(res) == level:
res.append([])
res[level].append(node.val)
if node.left:
dfs(node.left, level + 1)
if node.right:
dfs(node.right, level + 1)
dfs(root, 0)
return res
```
在这个代码中,我们使用了一个嵌套的dfs函数来实现递归。在dfs函数中,我们首先判断当前层数是否已经在结果列表中存在,如果不存在,则添加一个空列表。然后将当前节点的值添加到对应层数的列表中。最后,递归遍历当前节点的左右子节点,层数加1。最终返回结果列表res。
希望这个解答能够帮助到你。
阅读全文