二叉树的创建
typedef struct BiTNode {
char data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
void CreateBiTree(BiTree* T) {
char ch;
ch = getchar();
if (ch == '#')
*T = NULL;
else {
*T = (BiTNode*)malloc(sizeof(BiTNode));
if (NULL == *T)
exit(OVERFLOW);
(*T)->data = ch;
CreateBiTree(&((*T)->lchild));//递归创建左子树
CreateBiTree(&((*T)->rchild));//递归创建右子树
}
}
遍历二叉树的三种次序
void visit(BiTNode* p) {
printf("%c", p->data);
}
//先序遍历二叉树
void PreOrder(BiTree T) {
if (T != NULL) {
visit(T);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
//中序遍历二叉树
void InOrder(BiTree T) {
if (T != NULL) {
InOrder(T->lchild);
visit(T);
InOrder(T->rchild);
}
}
//后序遍历二叉树
void PostOrder(BiTree T) {
if (T != NULL) {
PostOrder(T->lchild);
PostOrder(T->