基本类型一:建立与遍历二叉树
#include <stdio.h>
#include<stdlib.h>
#define OK 1
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//先序建立二叉树,递归形式,中序后序类似
int CreateBiTree(BiTree *T){
char ch;
scanf("%c",&ch);
if(ch=='#') *T=NULL;
else{
*T = (BiTree)malloc(sizeof(BiTNode));
(*(*T)).data = ch;//生成一个节点
CreateBiTree(&(*(*T)).lchild);//先序建立左子树
CreateBiTree(&(*(*T)).rchild);//先序建立右子树
}
return OK;
}
//中序遍历,递归形式的中序遍历
void InOrderTraverse(BiTree T){
if(T){
InOrderTraverse(T->lchild);
printf("%c",T->data);
InOrderTraverse(T->rchild);
}
}
int main(){
BiTree T;
CreateBiTree(&T);//建立
InOrderTraverse(T);//输出
return 0;
}