1. 程式人生 > >前序建立遍歷二叉樹

前序建立遍歷二叉樹

題目:

利用二叉樹的前序遍歷來建立和遍歷一個二叉樹。

#include"stdio.h"
#include"string.h"
typedef struct NODE{
    char node;
    struct NODE *nextleft;
    struct NODE *nextright;
}BiTNode,*BiTree;
//建立一個二叉樹(用前序遍歷)
/*在這個建立函式中的引數,是使用的二級指標。因為如果不使用二級指標的話,是無法把那個建立的連結串列帶回主函式中的。因為在建立函式也是對指標的操作。所以,不使用二級指標是無法帶回那個連結串列的。*/
CreatBiTree(BiTree *T){
    char c;
    scanf("%c",&c);
    if(c==' ')
        *T=NULL;
    else{
        *T=(BiTNode *)malloc(sizeof(BiTNode));
        (**T).node=c;
        CreatBiTree(&(*T)->nextleft);/*在這裡必須先*, 在&。不能簡單的將二者看作可以相互抵消的。因為二者所表示的地址含義是不同的。而且在這裡由於用的是-〉,所以只要一個*,否則需要兩個*。 */
        CreatBiTree(&(*T)->nextright);

    }
}
//訪問到此結點,現在對此結點進行操作
visit(BiTNode *T,int level){
    printf("%c是二叉樹中的第%d層資料\n",T->node,level);
}
//前序遍歷一顆二叉樹
PerOrderTraverse(BiTNode *T,int level){
    if(T!=NULL){
         visit(T,level);
         PerOrderTraverse(T->nextleft,level+1);
         PerOrderTraverse(T->nextright,level+1);
    }
}
int main(){
   int level=1;
   BiTNode *T;
   T=NULL;
   CreatBiTree(&T);
   PerOrderTraverse(T,level);
   return 0;
 }