1.建立一棵用二叉链表方式存储的二叉树,并实现对其进行先序、中序、后序三种方法遍历,输出遍历结果。C语言代码
时间: 2024-01-22 18:19:28 浏览: 76
以下是用C语言实现二叉树的代码,包括先序、中序、后序三种遍历方式:
```c
#include <stdio.h>
#include <stdlib.h>
//定义二叉树结构体
typedef struct Node{
int data; //节点数据
struct Node *left; //左子节点
struct Node *right; //右子节点
}TreeNode, *Tree;
//创建二叉树
void createTree(Tree *t){
int data;
scanf("%d", &data);
if(data == -1){ //输入-1表示结束
*t = NULL;
}else{
*t = (Tree)malloc(sizeof(TreeNode));
(*t)->data = data;
createTree(&((*t)->left));
createTree(&((*t)->right));
}
}
//先序遍历
void preOrder(Tree t){
if(t != NULL){
printf("%d ", t->data);
preOrder(t->left);
preOrder(t->right);
}
}
//中序遍历
void inOrder(Tree t){
if(t != NULL){
inOrder(t->left);
printf("%d ", t->data);
inOrder(t->right);
}
}
//后序遍历
void postOrder(Tree t){
if(t != NULL){
postOrder(t->left);
postOrder(t->right);
printf("%d ", t->data);
}
}
int main(){
Tree t;
printf("请输入二叉树节点的值(-1表示结束):\n");
createTree(&t);
printf("先序遍历结果:");
preOrder(t);
printf("\n中序遍历结果:");
inOrder(t);
printf("\n后序遍历结果:");
postOrder(t);
return 0;
}
```
以上代码中,二叉树的创建使用了递归方式。在遍历时,先输出当前节点的值,再递归输出左子树和右子树。
阅读全文