用BFS算法写一个非二叉树的遍历
时间: 2023-08-04 12:31:03 浏览: 132
当我们使用BFS算法来遍历非二叉树时,我们可以使用队列来实现。具体步骤如下:
1. 将根节点入队。
2. 当队列不为空时,执行以下步骤:
a. 出队一个节点,访问该节点。
b. 将该节点的所有子节点依次入队。
3. 重复步骤2,直到队列为空。
下面是一个Python实现的非二叉树BFS遍历的代码示例:
```python
class TreeNode:
def __init__(self, val=0, children=None):
self.val = val
self.children = children
def bfs(root: TreeNode):
if not root:
return []
queue = [root]
res = []
while queue:
size = len(queue)
level = []
for i in range(size):
node = queue.pop(0)
level.append(node.val)
for child in node.children:
queue.append(child)
res.append(level)
return res
```
这里我们定义了一个`TreeNode`类来表示非二叉树的节点,其中`children`是一个列表,存储该节点的所有子节点。
在`bfs`函数中,我们首先判断根节点是否为空,然后初始化一个空队列`queue`和一个空列表`res`来存储遍历的结果。
接着,我们将根节点入队,并开始执行循环。在循环中,我们首先记录当前队列的大小`size`,然后创建一个空列表`level`来存储当前层次的节点值。
接着,我们依次从队列中取出`size`个节点,并将它们的值依次加入`level`列表中。同时,我们遍历每个节点的子节点,并将它们依次加入队列中。
最后,我们将`level`列表加入`res`列表中,并重复执行循环,直到队列为空。最后返回`res`列表,即为非二叉树的BFS遍历结果。
阅读全文