非遞迴實現先序遍歷和中序遍歷

2021-10-12 12:28:52 字數 1225 閱讀 3959

先序建立二叉樹,#表示空結點。

使用棧,實現非遞迴先序遍歷和中序遍歷。

使用佇列實現層次遍歷。

直接上**,寒假完善注釋,甚至從頭到尾把《資料結構與演算法》的相關**寫一遍。

#include

#include

#include

#include

using namespace std;

typedef

char datatype;

#define maxsize 100

typedef

struct node

bitreenode,

*bitree;

//先序建立二叉樹

void

createbitree

(bitree &root)

else

}//遞迴實現先序遍歷

void

preorder

(bitree root)

}//遞迴實現中序遍歷

void

inorder

(bitree root)

}//遞迴實現後序遍歷

void

postorder

(bitree root)

}//非遞迴實現先序遍歷

void

nonpreorder

(bitree root)

}//非遞迴實現中序遍歷

void

noninorder

(bitree root)

if(top!=-1

)}}//佇列實現層次遍歷

void

levelorder

(bitree root)

}//求二叉樹的深度

intdepth

(bitree root)

intmax

(int a,

int b)

//求葉子結點的數量

intleafcount

(bitree root)

//求度為1的結點的數量

intdegreeonecount

(bitree root)

//求度為2的結點的數量

intdegreetwocount

(bitree root)

//測試序列:abd##e##cf###

intmain()

中序遍歷(非遞迴)

前序遍歷 前序遍歷的遞迴實現 void preorder bintree root 非遞迴實現 根據前序遍歷訪問的順序,優先訪問根節點,然後再分別訪問左孩子和右孩子。即對於任一節點,其可看做是根節點,因此可以直接訪問,訪問完之後,若其左孩子 不為空,按相同規則訪問它的左子樹,當訪問其左子樹時,在訪問...

問題 C DS 6 3 非遞迴先序和中序遍歷

時間限制 15 sec 記憶體限制 128 mb 提交 774 解決 571 從鍵盤接收擴充套件先序序列,以二叉鍊錶作為儲存結構,建立二叉樹。採取非遞迴方法輸出這棵二叉樹的先序 中序遍歷序列。abc de g f abcdegf cbegdfa include include define max ...

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

先序遍歷 void btreeprevordernonr btnode root top stacktop s stackpop s cur top right printf n 首先建立乙個棧結構,用於儲存二叉樹的結點。開始遍歷二叉樹,當當前結點或者棧不為空的時候,表示遍歷沒有結束,輸出當前結點 ...