資源描述:
《求二叉樹結(jié)點(diǎn)路徑.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、求二叉樹上結(jié)點(diǎn)的路徑要求在采用鏈?zhǔn)酱鎯Y(jié)構(gòu)存儲的二叉樹上。以T指向根節(jié)點(diǎn),p指向任一給定的結(jié)點(diǎn),編程實現(xiàn)如下功能:(1)建立一棵二叉樹存儲結(jié)構(gòu);(2)求二叉樹的前序遍歷序列;(3)求二叉樹的中序遍歷序列;(4)求二叉樹的后序遍歷序列;(5)求給定的結(jié)點(diǎn)的路徑。#include#include#include#include#defineNodeNum100typedefstructnode{chardata;str
2、uctnode*lchild,*rchild;}BTNode,*BTREE;voidVISIT(chare)//---------輸出語句{printf("%c",e);}voidBUILDBT(BTREE&T)//------利用前序遍歷構(gòu)建二叉樹{charch;scanf("%c",&ch);if(ch=='')T=NULL;else{T=(BTREE)malloc(sizeof(BTNode));T->data=ch;BUILDBT(T->lchild);BUILDBT(T->rchild
3、);}}voidPREORDER(BTREET)//------二叉樹的前序遍歷{if(T!=NULL){VISIT(T->data);PREORDER(T->lchild);PREORDER(T->rchild);}}voidINORDER(BTREET)//------二叉樹的中序遍歷{if(T!=NULL){INORDER(T->lchild);VISIT(T->data);INORDER(T->rchild);}}voidPOSTORDER(BTREET)//------二叉樹的后序遍歷
4、{if(T!=NULL){POSTORDER(T->lchild);POSTORDER(T->rchild);VISIT(T->data);}}voidAllPath(BTREET,charitem)//-----求得定路徑結(jié)點(diǎn){BTREESTACK1[NodeNum],p=T;charSTACK2[NodeNum],top=-1,flag;//----定義一個堆棧,保存所找到的結(jié)點(diǎn)if(T!=NULL&&T->data!=item)//-----假如所找的結(jié)點(diǎn)不是根結(jié)點(diǎn)do{while(p!=
5、NULL){STACK1[++top]=p;STACK2[top]=0;p=p->lchild;}p=STACK1[top];flag=STACK2[top--];if(flag==0){STACK1[++top]=p;STACK2[top]=1;p=p->rchild;}else{if(p->data==item){while(top!=-1)printf("%4c",STACK1[top--]->data);break;}elsep=NULL;}}while(!(p==NULL&&top==
6、-1));//------通過后序遍歷非遞歸算法循環(huán)語句實現(xiàn)查找}intmenuselect()//------主菜單顯示{intsn;cout<7、"0退出學(xué)生信息管理系統(tǒng)"<>sn;if(sn<0
8、
9、sn>5)cout<<"輸入錯誤,請重新輸入"<10、<>item;AllPath(T,item);b