二叉树层序遍历c语言其中引用参数为二叉树结构体
时间: 2024-11-29 21:36:34 浏览: 5
C语言数据结构之线索二叉树及其遍历
在C语言中,层序遍历(广度优先搜索)二叉树通常使用队列数据结构来辅助。这里是一个基本的示例,假设我们有一个名为`BinaryTree`的二叉树结构体,它有两个字段:`root`表示根节点,`left`和`right`分别代表左子节点和右子节点:
```c
typedef struct TreeNode {
int val; // 节点值
struct TreeNode* left; // 左子节点指针
struct TreeNode* right; // 右子节点指针
} TreeNode;
// 定义一个函数进行二叉树的层序遍历,使用引用传递参数
void levelOrderTraversal(TreeNode** root) {
if (*root == NULL) {
return;
}
// 创建一个队列,并将根节点入队
queue<TreeNode*> q = {NULL};
q.head = q.tail = *root;
while (q.head != NULL) {
// 出队当前层的所有节点并处理
TreeNode* node = q.pop();
printf("%d ", node->val); // 打印节点值
// 将左子节点和右子节点入队,如果存在的话
if (node->left) {
q.push(node->left);
}
if (node->right) {
q.push(node->right);
}
}
}
```
在这个例子中,`levelOrderTraversal`函数接受指向`TreeNode`结构体指针的指针作为参数,通过引用可以直接修改原树的节点。函数首先检查根节点是否为空,然后创建队列,根节点入队。接下来,循环执行直到队列为空,每次出队一层的节点,打印其值,再将左右子节点(如果有)入队。
阅读全文