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

2021-05-25 19:03:07 字數 1043 閱讀 3663

遍歷演算法

1.中序遍歷的遞迴演算法定義:

若二叉樹非空,則依次執行如下操作:

(1)遍歷左子樹;

(2)訪問根結點;

(3)遍歷右子樹。

2.先序遍歷的遞迴演算法定義:

若二叉樹非空,則依次執行如下操作:

(1) 訪問根結點;

(2) 遍歷左子樹;

(3) 遍歷右子樹。

3.後序遍歷得遞迴演算法定義:

若二叉樹非空,則依次執行如下操作:

(1)遍歷左子樹;

(2)遍歷右子樹;

(3)訪問根結點。

實現**如下:

#include

#include

#define m 20

typedef struct node

btnode;

btnode *create()/* 建立二叉樹 */

return t;

}/*中序遍歷二叉樹*/

void inorder(btnode *t)

if(i>0)

}while(i>0||t!=null);

}/*前序遍歷二叉樹*/

void preorder(btnode *t)

if(i>0)

t=s[--i];

}while(i>0||t!=null);

}/*後序遍歷二叉樹*/

void postorder(btnode *t)

while(i>0&&s1[i]==1)

if(i>0)

}while(i>0);

}/* 主函式 */

void main()

if(choice==0)break;}}

例如:a

/    /

b     c

/      /   / 

d    e     f

輸入:abd###ce##f##

先序遍歷輸出:a b d c e f

中序遍歷輸出:d b a e c f

後序遍歷輸出:d b e f c a

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

二叉樹的非遞迴遍歷 先序遍歷,中序遍歷,後序遍歷 include include using namespace std typedef struct node binode,bitree 先序遞迴建立樹,這裡注意引數的型別,t的型別是 如果是 稍加改動就ok.void createtree bit...

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

演算法思想 先序 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...