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

2021-09-29 02:25:04 字數 958 閱讀 8782

時間限制: 15 sec 記憶體限制: 128 mb

提交: 774 解決: 571

從鍵盤接收擴充套件先序序列,以二叉鍊錶作為儲存結構,建立二叉樹。採取非遞迴方法輸出這棵二叉樹的先序、中序遍歷序列。

abc##de#g##f###

abcdegf

cbegdfa

#include#include#define max_size 100

//節點型別定義

typedef struct nodebitnode, *bitree;

typedef structseqstack;

//初始化棧

void initstack(seqstack *s)

//判空棧

int isempty(seqstack *s)

//進棧

int push(seqstack *s, bitree p)

else

}//出棧

int pop (seqstack *s, bitnode *p)

else

}//取棧頂元素

int top(seqstack *s, bitree p)

//訪問節點

void visit(char p)

//先序遍歷二叉樹的非遞迴實現

void preorder(bitree root)

p = q;

if(!isempty(&s))

}}//中序遍歷二叉樹的非遞迴實現

void inorder1(bitree root)

p = q;

if(!isempty(&s))

}}//用擴充套件先序遍歷建立二叉鍊錶

void createbitree(bitree *root1, bitree *root2)

else

}int main()

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

先序建立二叉樹,表示空結點。使用棧,實現非遞迴先序遍歷和中序遍歷。使用佇列實現層次遍歷。直接上 寒假完善注釋,甚至從頭到尾把 資料結構與演算法 的相關 寫一遍。include include include include using namespace std typedef char datat...

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

先序 中序 後序三種遞迴遍歷 先序遍歷 void preorder treenode head 中序遍歷 void inorder treenode head 後序遍歷 void postorder treenode head 層序遍歷列印二叉樹的遞迴法 include includeusing n...

已知先序和中序求後序或中序和後序求先序

首先介紹樹的三種遍歷方式的遍歷順序 先序遍歷 根 左子樹 右子樹 特點 第乙個元素為根 中序遍歷 左子樹 根 右子樹 特點 根的兩邊分別為左子樹和右子樹 後序遍歷 左子樹 右子樹 根 特點 最後乙個元素為根 有如下圖的二叉樹 其先序 中序 後序遍歷分別為 dbacegf abcdefg acbfge...