#仅作为考前练习(C语言实现)
#include <stdio.h>
#include <stdlib.h>
typedef struct bnode{
char data ;
struct bnode* lchild;
struct bnode* rchild;
}BTNode,*BTree;
void pre_create_tree(BTree* h)
{
char ch;
scanf("%c",&ch);
if(ch == '#'){
*h = NULL ;
}else{
BTNode* q = (BTNode*)malloc(sizeof(BTNode));
q->data = ch;
q->lchild = NULL;
q->rchild = NULL;
*h = q;
pre_create_tree(&((*h)->lchild));
pre_create_tree(&((*h)->rchild));
}
}
void preOrder(BTree h)
{
if(h != NULL){
printf("%c ",h->data);
preOrder(h->lchild);
preOrder(h->rchild);
}
}
void visit(BTNode* p)
{
printf("%c ",p->data);
}
void InOrder(BTree h)
{
if(h != NULL){
InOrder(h->lchild);
visit(h);
InOrder(h->rchild);
}
}
void PostOrder(BTree h)
{
if(h != NULL){
PostOrder(h->lchild);
PostOrder(h->rchild);
visit(h);
}
}
int main ()
{
BTree head;
pre_create_tree(&head);
printf("\n 先序遍历 \n");
preOrder(head);
printf("\n 中序遍历 \n");
InOrder(head);
printf("\n 后序遍历 \n");
PostOrder(head);
return 0;
}
二叉树先序遍历建立,以‘#’作为空结点标识,递归实现遍历(先中后)。