建立一棵二叉树,按层次遍历该二叉树,并显示出这棵二叉树。C语言完整版
时间: 2024-06-21 10:03:58 浏览: 4
在C语言中,建立一棵二叉树并进行层次遍历通常涉及定义结构体表示节点,创建一个队列用于层次遍历,以及递归或循环的方式实现节点的添加和遍历。以下是一个简单的例子,展示了如何创建一个二叉树节点、插入节点和进行层次遍历:
```c
#include <stdio.h>
#include <stdlib.h>
#include <queue>
// 定义二叉树节点结构
typedef struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 插入新节点到二叉树
TreeNode* insertNode(TreeNode* root, int value) {
if (root == NULL) {
return (TreeNode*)malloc(sizeof(TreeNode));
}
if (value < root->data) {
root->left = insertNode(root->left, value);
} else {
root->right = insertNode(root->right, value);
}
return root;
}
// 层次遍历二叉树
void levelOrderTraversal(TreeNode* root, void (*printFunc)(int)) {
if (root == NULL) return;
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
TreeNode* node = q.front();
printFunc(node->data); // 打印当前层节点值
q.pop();
if (node->left) {
q.push(node->left);
}
if (node->right) {
q.push(node->right);
}
}
}
// 示例打印函数,这里假设我们使用printf
void printNode(int value) {
printf("%d ", value);
}
int main() {
// 创建一个空二叉树
TreeNode* root = NULL;
// 插入一些节点(这里只用示例)
root = insertNode(root, 50);
insertNode(root, 30);
insertNode(root, 20);
insertNode(root, 40);
insertNode(root, 70);
insertNode(root, 60);
insertNode(root, 80);
printf("层次遍历结果(从上到下,从左到右):\n");
levelOrderTraversal(root, printNode);
return 0;
}
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)