二叉树:二叉树是n个节点的有限集合(n>=0),该集合或为空集,或由一个根节点和两棵互不相交的分别称为根节点左右子树的二叉树组成;
1> 预处理与结构体定义
#define OK 0
#define ERROR -1
typedef char ElemType;
typedef int Status;
typedef struct Node{
ElemType data;
struct Node *lchild,*rchild;
}Node,*BTree;
2> 创建二叉树(先序输入)
Status CreateBTree(BTree *T){
ElemType ch;
scanf("%c",&ch);
if(ch == '#'){
*T = NULL;
}else{
*T = (BTree)malloc(sizeof(Node));
if(!(*T))
{
return ERROR;
}
(*T)->data = ch;
CreateBTree(&(*T)->lchild);
CreateBTree(&(*T)->rchild);
}
}
3> 三种遍历方式(递归)
Status FTraverse(BTree T){
if(!T){
return ERROR;
}
printf("%c ",T->data);
FTraverse(T->lchild);
FTraverse(T->rchild);
}
Status MTraverse(BTree T){
if(!T){
return ERROR;
}
FTraverse(T->lchild);
printf("%c ",T->data);
FTraverse(T->rchild);
}
Status LTraverse(BTree T){
if(!T){
return ERROR;
}
FTraverse(T->lchild);
FTraverse(T->rchild);
printf("%c ",T->data);
}