*/ 出自: 编程中国 https://www.bc-cn.net
*/ 作者: Lenying
*/ 时间: 2007-10-24 编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------
#define OK 1
#define NULL 0
typedef int Status;
typedef struct BitNode
{
    char data;
    struct BitNode *lchild,*rchild;
}BitNode,*BitTree;
main()
{
    Status CreateBitTree(BitTree *T);
    Status PreOrderTraverse(BitTree T);
    BitTree tree;
    CreateBitTree(&tree);
    printf("\n");
    PreOrderTraverse(tree);
    getch();
    return OK;
}
Status CreateBitTree(BitTree *T)
{
    char ch;
    scanf("%c",&ch);
    if(ch==' ') *T=0;
    else
    {
        *T=(BitNode*)malloc(sizeof(BitNode));
        (*T)->data=ch;
        CreateBitTree(&((*T)->lchild));
        CreateBitTree(&((*T)->rchild));
    }
    return OK;
}
Status PreOrderTraverse(BitTree T)
{
    if(T)
    {
        printf("%c",T->data);
        PreOrderTraverse(T->lchild);
        PreOrderTraverse(T->rchild);
    }
    else
        return OK;
}
说明:1、以上程序经测试通过。
      2、以上程序是数据结构(严蔚敏C语言版)的第6章129页算法6.1和第131页算法6.4的具体实现。
      3、在BitTree *T中,T是二级指针,即指向指针的指针。
      4、可以以书中127页图6.8(b)为例:输入 ABC--DE-G--F--- 其中“-”代表空格。图如下:         
               A
              /   
             B 
            / \
           C   D
              / \
             E   F
              \
               G    
                   



											
	    

	