| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
#include <stdio.h> 
#include <stdlib.h>//使用malloc 
 
typedef char ElemType; 
 
typedef struct BiTNode 
{ 
        char data; 
        struct BiTNode *lchild, *rchild; 
}BiTNode, *BiTree; 
//创建一棵二叉树,约定用户遵照前序遍历的方式输入数据 
 
CreateBiTree ( BiTree *T )//T是指向指针的指针 
{ 
        char c; 
         
        scanf("%c", &c); 
         
        if ( ' '==c ) 
        { 
                *T = NULL; 
        } 
        else 
        { 
                *T = (BiTNode *)malloc(sizeof(BiTNode)); 
                (*T)->data = c; 
                CreateBiTree(&(*T)->lchild);//递归 
                CreateBiTree(&(*T)->rchild ); 
        } 
} 
 
 
//访问二叉树结点的具体操作 
visit( char c, int level ) 
{ 
printf("%c位于第%d层\n", c, level); 
} 
 
 
//遍历二叉树 
PreOrderTraverse( BiTree T, int level ) 
{ 
 
        if ( T ) 
        { 
                visit( T->data, level ); 
                PreOrderTraverse( T->lchild, level+1 ); 
                PreOrderTraverse( T->rchild, level+1 ); 
        } 
         
} 
 
int main() 
{ 
        int level = 1; 
        BiTree T = NULL; 
 
 
        CreateBiTree ( &T ); 
        PreOrderTraverse ( T, level ); 
        return 0; 
} 
 
 
 
这是二叉树前序遍历法的建立代码 
 
 
问题:为什么CreateBiTree ( BiTree *T )   这里的T要用指向指针的指针, |   
 
 
 
 |