二叉树可以用数组和链式结构这两种方式来创建,这里只介绍二叉树的链式结构,并且实现二叉树的前序、中序和后序遍历。(运用二叉树组定义静态二叉树的方式以注释的形式写明)
二叉树的创建有三种方式:前序、中序和后序。这里只展现了前序遍历的方式。
#include<stdio.h>
#include<stdlib.h>
typedef struct btnode{
//int data[1000];二叉树组,从上到下,从左到右依次存在数组里
char data;
//int llink,rlink;静态二叉树,分别存放左子树和右子树
struct btnode *lchild;
struct btnode *rchild;
}BTnode,*BiTree;//tree[n+1];静态二叉树n个结点
void preorder(BiTree T);
void midorder(BiTree T);
void suborder(BiTree T);
void createtree(BiTree &T);
int main(){
BiTree T;
/*以下是测试代码
createtree(T);
preorder(T);
printf("\n");
midorder(T);
printf("\n");
suborder(T);
printf("\n");
*/
return 0;
}
void preorder(BiTree T){
if(T!=NULL){
printf("%c ",T->data);
preorder(T->lchild);
preorder(T->rchild);
}
}
void midorder(BiTree T){
if(T!=NULL){
midorder(T->lchild);
printf("%c ",T->data);
midorder(T->rchild);
}
}
void suborder(BiTree T){
if(T!=NULL){
suborder(T->lchild);
suborder(T->rchild);
printf("%c ",T->data);
}
}
void createtree(BiTree &T){//先序遍历创建
char ch;
ch=getchar();
if(ch=='#') T=NULL;
else{
T=(struct btnode*)malloc(sizeof(struct btnode));
T->data=ch;
createtree(T->lchild);
createtree(T->rchild);
}
}