二叉樹的中序遍歷-遞迴和非遞迴演算法
阿新 • • 發佈:2018-11-17
建立二叉樹就不說了,這裡直接:
- 中序遞迴遍歷演算法
void InOrder(BiTree T){
if(T){
InOrder(T->lchild);
cout<<T->data<<" ";
InOrder(T->rchild);
}
}
- 中序非遞迴遍歷演算法
void InOrder(BiTree T){ //還是模擬上面的遍歷過程 BiTree ptr[20]; int top = -1; /*下面的雙重判斷和前面的一樣,在進棧、出棧的過程中可能會出現棧空的情況,而此時的遍歷還沒有結束, 所以需要據此來維持迴圈的進行。*/ while(T || top!=-1){ while(T){ ptr[++top] = T; T = T->lchild; } if(top!=-1){ T = ptr[top--]; cout<<T->data<<" "; //輸出在出棧後 T = T->rchild; } } }
-----------------------------------------------------------分割線------------------------------------------------------------------------
測試截圖:
作者:無涯明月
發文時間:2018-11-16