前序建立遍歷二叉樹
阿新 • • 發佈:2018-12-08
題目:
利用二叉樹的前序遍歷來建立和遍歷一個二叉樹。
#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; }