一、实验目的
1. 理解数据结构中二叉树的定义。
2. 掌握二叉树的链式存储结构的方法。
3.掌握二叉树的建立与存储,掌握二叉树的各种遍历方法。
二、实验内容
创建一棵二叉树并存储,输出二叉树的先序遍历、中序遍历与后序遍
历的结果。
三、实验步骤
1. 建立二叉树并利用二叉链表的方式存储此二叉树。
2. 输出二叉树的先序遍历、中序遍历与后序遍历的结果。
四、代码实现
#include <stdio.h>
#include <stdlib.h>
typedef struct bitnode{
char data;
struct bitnode *lchild;
struct bitnode *rchild;
}bitnode,*BiTree;
BiTree InitTree(BiTree T){
T = (BiTree)malloc(sizeof(struct bitnode));
T->data = 'A';
T->lchild = NULL;
T->rchild = NULL;
return T;
}
BiTree left(BiTree Tree,char ch){
BiTree p = (BiTree) malloc(sizeof(struct bitnode));
p->lchild = NULL;
p->rchild = NULL;
p->data = ch;
Tree->lchild = p;
return p;
}
BiTree right(BiTree Tree,char ch){
BiTree p = (BiTree) malloc(sizeof(struct bitnode));
p->lchild = NULL;
p->rchild = NULL;
p->data = ch;
Tree->rchild = p;
return p;
}
//树的先序遍历
void PreOrder(BiTree T){
if(T != NULL){
printf("%c ",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
return;
}
//中序遍历
void InOrder(BiTree T){
if(T != NULL){
InOrder(T->lchild);
printf("%c ",T->data);
InOrder(T->rchild);
}
return;
}
//后续遍历
void PostOrder(BiTree T){
if(T != NULL){
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%c ",T->data);
}
return;
}
int main() {
BiTree T = NULL;
T = InitTree(T);
BiTree B = left(T,'B');
BiTree E = right(T,'E');
BiTree C = right(B,'C');
left(C,'D');
BiTree F = right(E,'F');
BiTree G = left(F,'G');
left(G,'H');
right(G,'K');
printf("先序遍历:");
PreOrder(T);
printf("\n");
printf("中序遍历:");
InOrder(T);
printf("\n");
printf("后序遍历:");
PostOrder(T);
return 0;
}