二叉树结构图:
C源代码
#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode {
char data;
struct BiTNode *lchild, *rchild;
}BiTNode, BiTree;
static int i=0;
//char TDATA[]={'0','1','2','3','4','5','6','7','8','9',' ','9','8','7','6','5','4','3','2','1','0',' '};
char TDATA[]={'0','1','2','#','#','3','#','#','4','5','6','#','#','7','#','#','8','9',' ',' ','a','#','#'};
void preOrder(BiTree *T)
{
if(T == NULL)
{
return;
}
printf("%c ", T->data);
preOrder(T->lchild);
preOrder(T->rchild);
}
void inOrder(BiTree *T)
{
if(T == NULL)
{
return;
}
inOrder(T->lchild);
printf("%c ", T->data);
inOrder(T->rchild);
}
void postOrder(BiTree *T)
{
if(T == NULL)
{
return;
}
postOrder(T->lchild);
postOrder(T->rchild);
printf("%c ", T->data);
}
void createBiTree(BiTree **T){
char e;
e=TDATA[i++];
printf("i=%d,e=%d,e=%c\n",i,e,e);
if(i>100)
e=' ';
if(e == ' ' || e=='#')
{
*T = NULL;
}
else
{
*T = (BiTree *)malloc(sizeof(BiTNode));
if(!(*T))
{
printf("Failed memory malloc for node\n");
return;
}
(*T)->data = e;
createBiTree(&(*T)->lchild);
createBiTree(&(*T)->rchild);
}
}
int main(void){
BiTree *T;
createBiTree(&T);
printf("Create Binary Tree OK!\n");
printf(" preOrder:");
preOrder(T);
printf("\n InOrder:");
inOrder(T);
printf("\npostOrder:");
postOrder(T);
while(1);
}
运行结果: