二叉樹的先序建立&遞迴先序遍歷
阿新 • • 發佈:2020-07-17
#include <stdio.h> #include <stdlib.h> typedef char Elemtype; typedef struct BiTNode { Elemtype data; struct BiTNode * lchild,*rchild; }BiTNode,*BiTree; //先序遞迴來輸入,建立二叉樹 void Creat_BiTree(BiTree *T)//二級指標可以保證回傳的根節點不變,同時二級指標可以改變一級指標 { char ch; scanf("%c",&ch);//注意scanf規範 if(ch==' ') (*T)=NULL; else { (*T)=malloc(sizeof(BiTNode));//第一次實際改變PT一級指標 (*T)->data=ch; Creat_BiTree(&(*T)->lchild); Creat_BiTree(&(*T)->rchild); } } //訪問操作 void visit(char ch,int level) { printf("%c 位於第 %d 層\n",ch,level); } void 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 PT=NULL; Creat_BiTree(&PT); PreOrderTraverse(PT,level);// return 0; }
情景:建立二叉樹,填充字母,並顯示對應的層數。
C語言中引用二級指標可以很好地修改一級指標。