您好,登錄后才能下訂單哦!
typedef struct TreeNode *BinTree; typedef BinTree Position; struct TreeNode{ ElementType Data; BinTree Left; BinTree Right; }; BinTree BT;
void InOrderTraversal(BinTree BT)//中序遍歷非遞歸遍歷算法(使用堆棧,用循環(huán)實(shí)現(xiàn)) { BinTree T=BT; Stack S=CreakStack(MaxSize);//創(chuàng)建并初始化堆棧S while(T||!IsEmpty(S)){ while(T){//一直向左并將沿途結(jié)點(diǎn)壓入堆棧 Push(S,T); T=T->Left; } if(!IsEmpty(S)){ T=Pop(S);//結(jié)點(diǎn)彈出堆棧 printf("%5d",T->Data);//(訪問(wèn))打印結(jié)點(diǎn) T=T->Right;//轉(zhuǎn)向右子樹(shù) } } } void PreOrderTraversal(BinTree BT)//先序遍歷非遞歸遍歷算法(使用堆棧,用循環(huán)實(shí)現(xiàn)) { BinTree T=BT; Stack S=CreakStack(MaxSize);//創(chuàng)建并初始化堆棧S while(T||!IsEmpty(S)){ while(T){//一直向左并將沿途結(jié)點(diǎn)壓入堆棧 printf("%5d",T->Data);//(訪問(wèn))打印結(jié)點(diǎn) Push(S,T); T=T->Left; } if(!IsEmpty(S)){ T=Pop(S);//結(jié)點(diǎn)彈出堆棧 T=T->Right;//轉(zhuǎn)向右子樹(shù) } } } void PostOrderTraversal( BinTree BT )//后序遍歷非遞歸遍歷算法(使用堆棧,用循環(huán)實(shí)現(xiàn)) { BinTree T BT; Stack S = CreatStack( MaxSize ); /*創(chuàng)建并初始化堆棧S*/ Stack Q = CreatStack( MaxSize ); /*創(chuàng)建并初始化堆棧Q,用于輸出反向*/ while( T || !IsEmpty(S) ){ while(T){ /*一直向右并將沿途結(jié)點(diǎn)壓入堆棧*/ Push(S,T); Push(Q,T);/*將遍歷到的結(jié)點(diǎn)壓棧,用于反向*/ T = T->Right; } if(!IsEmpty(S)){ T = Pop(S); /*結(jié)點(diǎn)彈出堆棧*/ T = T->Left; /*轉(zhuǎn)向左子樹(shù)*/ } } while( !IsEmpty(Q) ){ T = Pop(Q); printf(“%5d”, T->Data); /*(訪問(wèn))打印結(jié)點(diǎn)*/ } }
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。