横向树状打印输出二叉树c语言
时间: 2024-06-24 11:00:45 浏览: 5
在C语言中,横向树状打印(也称为水平遍历或广度优先搜索)二叉树是一种常见的算法,用于按照从上到下、从左到右的顺序逐层输出二叉树节点。这通常使用队列数据结构来实现,因为队列的先进先出(FIFO)特性与水平遍历的顺序相匹配。
以下是一个简单的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <queue>
// 定义二叉树节点
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 水平打印二叉树函数
void horizontalPrint(TreeNode* root) {
if (root == NULL) return; // 如果根节点为空,则直接返回
// 使用队列保存节点
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
// 获取当前层的所有节点
int levelSize = q.size();
for (int i = 0; i < levelSize; i++) {
TreeNode* node = q.front();
printf("%d ", node->val); // 打印节点值
q.pop();
// 如果有左右子节点,将它们加入队列
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
}
printf("\n"); // 换行,开始下一层
}
}
// 示例:创建一个二叉树并进行水平打印
TreeNode* createSampleTree() {
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = 1;
root->left = (TreeNode*)malloc(sizeof(TreeNode));
root->left->val = 2;
root->right = (TreeNode*)malloc(sizeof(TreeNode));
root->right->val = 3;
root->left->left = (TreeNode*)malloc(sizeof(TreeNode));
root->left->left->val = 4;
root->left->right = (TreeNode*)malloc(sizeof(TreeNode));
root->left->right->val = 5;
// 添加更多节点...
return root;
}
int main() {
TreeNode* root = createSampleTree();
horizontalPrint(root);
return 0;
}
```
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)