資料結構 二叉樹的遞迴 非遞迴遍歷

2021-08-15 07:28:11 字數 838 閱讀 4185

複習一下二叉樹遞迴非遞迴的先中後序遍歷

寫非遞迴後序遍歷的時候卡殼了,參考了一下網上的思路,大概有兩種,一種是標記每個節點是否有走過,如果父節點的左右子節點都標記訪問過,則可以訪問父節點;一種是定義乙個指標,指向上乙個訪問的節點,如果某父節點的右子節點為null或者是上乙個訪問的節點,則該父節點應當被訪問。

#include#include#include#define size 20

using namespace std;

typedef struct bitnodebitnode,*bitree;

//按先序遍歷二叉樹的建立

void create_bitree(bitree &exa)

else

}//遞迴方式先序遍歷

void digui_preorder(bitree exa)

//遞迴方式中序遍歷

void digui_inorder(bitree exa)

//非遞迴方式先序遍歷

void feidigui_preorder(bitree exa)

else

}}//非遞迴方式中序遍歷

void feidigui_inorder(bitree exa)

else

}}//非遞迴方式後序遍歷

void feidigui_postorder(bitree exa)

while(!bitnode_stack.empty())

else}}

}int main(){

bitree t;

create_bitree(t);

digui_preorder(t);

cout<

資料結構 二叉樹的非遞迴遍歷

之前的文章,我們詳細的講述了二叉樹的建立 遍歷等的實現,但是都是以遞迴的方式。其實我們知道遞迴的過程是乙個不斷開闢棧幀的過程,會影響演算法的執行效率,那麼這篇文章主要是站在c語言的角度為大家分析一下二叉樹的非遞迴前序 中序 後序遍歷 1 二叉樹的前序遍歷 1 第一步 建立乙個二維指標,用來儲存每乙個...

二叉樹遍歷(遞迴 非遞迴)

二叉樹以及對二叉樹的三種遍歷 先根,中根,後根 的遞迴遍歷演算法實現,以及先根遍歷的非遞迴實現。node public class node public node left public node right public object value 遍歷訪問操作介面 public inte ce ...

資料結構 二叉樹遍歷非遞迴實現

資料結構中二叉樹的遍歷主要分為先序,中序和後序。順序是相對根節點來說的。先序中序非遞迴實現比較簡單,後序較為複雜些,需要判斷右子樹是否為空或遍歷完。以下為三種遍歷方法的非遞迴c實現 include include typedef struct binode binode,bitree typedef...