二叉樹的非遞迴先序,中序,後序遍歷

2021-06-18 13:08:32 字數 930 閱讀 3114

二叉樹的非遞迴遍歷:

先序遍歷,中序遍歷,後序遍歷

#include #include using namespace std;

typedef struct node

binode, *bitree;

//先序遞迴建立樹,這裡注意引數的型別,t的型別是 "*&" ,如果是 "**" **稍加改動就ok...

void createtree(bitree &t)

}void preordernore(bitree t) // 前序遍歷

stacks;

bitree p = null;

p = t;

while( p != null || !s.empty())

if(!s.empty())

}}void inordernore(bitree t) //中序遍歷

stacks;

bitree p = null;

p = t;

while(p != null || !s.empty())

if (!s.empty())

}}void postordernore(bitree t) //後序遍歷

bitree p = null;

stacks;

p = t;

int tag[200]; // 棧,用於標識從左(0)或右(1)返回

int top = -1;

while ( p != null || !s.empty())

while ( !s.empty() && tag[top] == 1)

if (!s.empty())

else

}}int main()

{ cout<<"enter char one by one"<

by andy @2013-09-08

二叉樹的非遞迴遍歷(先序,中序,後序)

遍歷演算法 1 中序遍歷的遞迴演算法定義 若二叉樹非空,則依次執行如下操作 1 遍歷左子樹 2 訪問根結點 3 遍歷右子樹。2 先序遍歷的遞迴演算法定義 若二叉樹非空,則依次執行如下操作 1 訪問根結點 2 遍歷左子樹 3 遍歷右子樹。3 後序遍歷得遞迴演算法定義 若二叉樹非空,則依次執行如下操作 ...

二叉樹的非遞迴先序 中序 後序遍歷

演算法思想 先序 nlr的訪問順序,由於r節點,即右孩子的訪問需要通過根節點的指標來實現,所以,需要設乙個棧來儲存根節點。具體看 void preorder btree t else while 中序遍歷和先序遍歷幾乎一樣 void midorder btree t else 後序遍歷 lrn順序。...

二叉樹非遞迴實現先序 中序 後序遍歷

測試資料 abc000de0f00g00 這是乙個先序序列 0表示當前結點為空 include includetypedef struct node node char chin 100 陣列從儲存獲取的二叉樹序列元素 int m int initchain node q,int step if q...