帮我用c语言写一个二叉树创建与遍历
时间: 2023-06-20 11:08:04 浏览: 123
二叉树的创建与遍历C语言实现代码.zip
好的,以下是一个简单的二叉树创建与遍历的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 创建二叉树
TreeNode* createTree() {
int val;
printf("请输入节点的值(输入 -1 表示该节点为空):");
scanf("%d", &val);
if (val == -1) {
return NULL;
}
// 创建新节点
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->val = val;
// 递归创建左右子树
printf("创建节点 %d 的左子树:\n", val);
node->left = createTree();
printf("创建节点 %d 的右子树:\n", val);
node->right = createTree();
return node;
}
// 前序遍历
void preOrder(TreeNode* node) {
if (node == NULL) {
return;
}
printf("%d ", node->val);
preOrder(node->left);
preOrder(node->right);
}
// 中序遍历
void inOrder(TreeNode* node) {
if (node == NULL) {
return;
}
inOrder(node->left);
printf("%d ", node->val);
inOrder(node->right);
}
// 后序遍历
void postOrder(TreeNode* node) {
if (node == NULL) {
return;
}
postOrder(node->left);
postOrder(node->right);
printf("%d ", node->val);
}
int main() {
TreeNode* root = createTree();
printf("前序遍历结果:");
preOrder(root);
printf("\n");
printf("中序遍历结果:");
inOrder(root);
printf("\n");
printf("后序遍历结果:");
postOrder(root);
printf("\n");
return 0;
}
```
该代码可以让用户输入二叉树的节点值,递归地创建左右子树,并按照前序、中序、后序遍历的顺序输出二叉树节点的值。
阅读全文