建立一棵二叉树
struct BiTNode
{
char data;
struct BiTNode *lchild, *rchild;
};
char t[51];
int cnt;
struct BiTNode *creatBiTree()
{
struct BiTNode *T;
if(t[++cnt]==',')
{
T = NULL;
}
else
{
T = (struct BiTNode*)malloc(sizeof(struct BiTNode));
T->data = t[cnt];
T->lchild = creatBiTree();
T->rchild = creatBiTree();
}
return T;
}
void visit(struct BiTNode *T)
{
if(T->data!=',')
{
printf("%c", T->data);
}
}
前序遍历
void PreOrder(struct BiTNode *T)
{
if(T!=NULL)
{
visit(T);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
中序遍历
void InOrder(struct BiTNode *T)
{
if(T!=NULL)
{
InOrder(T->lchild);
visit(T);
InOrder(T->rchild);
}
}
后序遍历
void PostOrder(struct BiTNode *T)
{
if(T!=NULL)
{
PostOrder(T->lchild);
PostOrder(T->rchild);
visit(T);
}
}
层序遍历
void cengxu(struct BiTNode *T)
{
int in = 0, out = 0;
struct node *a[1050];
a[in ++] = T;
while(in > out)
{
if (a[out] != NULL)
{
printf("%c",a[out] -> data);
a[in ++] = a[out] -> lchild;
a[in ++] = a[out] -> rchild;
}
out ++;
}
}