二叉树的建立以及先序中序后序递归遍历

#include <stdlib.h>
#include <stdio.h>
#define ElemType char
typedef struct BiTNode *BiTree;
struct BiTNode{
    ElemType data;
    BiTree lchild,rchild;
};
BiTree CreateBiTree(){
    ElemType ch;
    BiTree T;
    scanf("%c",&ch);
    if(ch=='#')T=NULL;
    else{
        T = (BiTree)malloc(sizeof *T);
        T->data = ch;
        T->lchild = CreateBiTree();
        T->rchild = CreateBiTree();
    }
    return T;
}
void PreOrderTraverse(BiTree T){
    if(T){
       printf("%c",T->data);
       PreOrderTraverse(T->lchild);
       PreOrderTraverse(T->rchild);
    }
}
 
void InOrderTraverse(BiTree T){
    if(T){
       InOrderTraverse(T->lchild);
       printf("%c",T->data);
       InOrderTraverse(T->rchild);
    }
}
void PostOrderTraverse(BiTree T){
    if(T){
       PostOrderTraverse(T->lchild);
       PostOrderTraverse(T->rchild);
       printf("%c",T->data);
    }
}
 main(){
    BiTree T;
    T = CreateBiTree();
    PostOrderTraverse(T);
	// EDBA##C###HF#G###
}
</pre><pre name="code" class="objc"><img src="http://img.blog.csdn.net/20150812210227654?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

你可能感兴趣的:(递归,遍历,二叉树)