问题来源
在学习先序遍历的顺序创建二叉树的时候,首先自己写了如下的代码:
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<math.h>
typedef struct BiTreeNode
{
char Data;
struct BiTreeNode* Lchild;
struct BiTreeNode* Rchild;
}BiTreeNode,*BiTree;
void CreateBiTree(BiTree T)
{
if(T == NULL){
return;
}
else{
char ch;
scanf("%c",&ch);
if(ch == '#'){
T = NULL;
}
else{
T = (BiTree)malloc(sizeof(BiTreeNode));
if(T == NULL)
exit(OVERFLOW);
T->Data = ch;
CreateBiTree(T->Lchild);
CreateBiTree(T->Rchild);
}
}
}
void PreOrderTraverse(BiTree T)
{
if(T == NULL)
return;
else{
printf("%c",T->Data);
PreOrderTraverse(T->Lchild);
PreOrderTraverse(T->Rchild);
}
}
void InOrderTraverse(BiTree T)
{
if(T == NULL)
return;
else{
InOrderTraverse(T->Lchild);
printf("%c",T->Data);
InOrderTraverse(T->Rchild);
}
}
void PostOrderTraverse(BiTree T)
{
if(T == NULL)
return;
else{
PostOrderTraverse(T->Lchild);
PostOrderTraverse(T->Rchild);
printf("%c",T->Data);
}
}
int main(void)
{
BiTree T;
CreateBiTree(T);
InOrderTraverse(T);
printf("\n");
PostOrderTraverse(T);
return 0;
}
查找分析
满怀成就感的写完了上面的代码