二叉树遍历方式用到广度优先遍历思想的是
一、二叉树的遍历方式
在进行二叉树的遍历时,可以按照如下方式遍历:
1. 先序遍历:先访问根节点,然后递归访问左子树和右子树。
2. 中序遍历:先递归访问左子树,然后访问根节点,最后递归访问右子树。
3. 后序遍历:先递归访问左子树和右子树,最后访问根节点。
二、广度优先遍历
广度优先遍历是一种从根节点开始逐层遍历,直到遍历完成为止的遍历方式。在广度优先遍历过程中,我们需要使用队列这种数据结构来保存每层的节点信息。
三、二叉树遍历方式使用广度优先遍历的情况
二叉树的遍历方式中,只有层序遍历需要使用到广度优先遍历思想。在层序遍历中,我们从根节点开始逐层遍历,对于每一层节点,先按照从左到右的顺序访问每个节点,然后将下一层的节点全部加入队列中,接着从队列中拿出第一个节点继续重复以上操作,直到遍历完成。
四、代码实现
对于二叉树的层序遍历,可以使用如下代码实现:
```
void levelOrder(TreeNode* root)
{
if (root == NULL)
{
return;
}
queue
q.push(root);
while (!q.empty())
{
int size = q.size(); // 当前层的节点数
for (int i = 0; i < size; i++)
{
TreeNode* node = q.front();
q.pop();
// 输出node节点的信息
if (node->left != NULL)
{
q.push(node->left);
}
if (node->right != NULL)
{
q.push(node->right);
}
}
}
}
```
五、总结
广度优先遍历适用于需要按照从上到下、从左到右的顺序遍历树的情况,例如二叉树的层序遍历。在实现层序遍历的过程中,我们需要使用队列这种数据结构来保存当前层的节点信息,然后逐层遍历并将下一层的节点加入队列。