二叉樹前中後序遍歷

2021-10-16 04:11:17 字數 2446 閱讀 4121

二叉樹 - 6. 先序遍歷 (10分)

請編寫遞迴函式,實現二叉樹的先序遍歷。

函式原型

// 先序遍歷

void bintreepreorder(const tnode *root);

說明:root為二叉樹或子樹的根指標。

在標頭檔案 bintree.h 新增函式宣告。

bintree.h

......

// 先序遍歷

void bintreepreorder(const tnode *root);

......

在程式檔案 bintree.c 中新增函式的定義。

bintree.c

......

/* 你提交的**將被嵌在這裡 */

裁判程式

輸入樣例

eibj##h###df#a##g#c##
輸出樣例

eibjhdfagc
void bintreepreorder(const tnode *root)

}

二叉樹 - 7. 後序遍歷 (10分)

請編寫遞迴函式,實現二叉樹的後序遍歷。

函式原型

// 後序遍歷

void bintreepostorder(const tnode *root);

說明:root為二叉樹或子樹的根指標。

在標頭檔案 bintree.h 新增函式宣告。

bintree.h

......

// 後序遍歷

void bintreepostorder(const tnode *root);

......

在程式檔案 bintree.c 中新增函式的定義。

bintree.c

......

/* 你提交的**將被嵌在這裡 */

裁判程式

輸入樣例

eibj##h###df#a##g#c##
輸出樣例

jhbiafcgde
void bintreepostorder(const tnode *root)

}

二叉樹 - 8. 中序遍歷 (10分)

請編寫遞迴函式,實現二叉樹的中序遍歷。

函式原型

// 中序遍歷

void bintreeinorder(const tnode *root);

說明:root為二叉樹或子樹的根指標。

在標頭檔案 bintree.h 新增函式宣告。

bintree.h

......

// 中序遍歷

void bintreeinorder(const tnode *root);

......

在程式檔案 bintree.c 中新增函式的定義。

bintree.c

......

/* 你提交的**將被嵌在這裡 */

裁判程式

輸入樣例

eibj##h###df#a##g#c##
輸出樣例

jbhiefadgc
void bintreeinorder(const tnode *root)

}

二叉樹前中後序遍歷

前序遍歷a b d f g h i e c 中序遍歷f d h g i b e a c 後序遍歷f h i g d e b c a 前序 根左右 中序 左根右 後序 左右根 已知某二叉樹的前序遍歷為a b d f g h i e c,中序遍歷為f d h g i b e a c,請還原這顆二叉樹。思...

二叉樹前中後序遍歷相互求法

今天來總結下二叉樹前序 中序 後序遍歷相互求法,即如果知道兩個的遍歷,如何求第三種遍歷方法,比較笨的方法是畫出來二叉樹,然後根據各種遍歷不同的特性來求,也可以程式設計求出,下面我們分別說明。首先,我們看看前序 中序 後序遍歷的特性 前序遍歷 1.訪問根節點 2.前序遍歷左子樹 3.前序遍歷右子樹 中...

二叉樹前中後序遍歷迭代實現

二叉樹遍歷迭代實現 迭代用棧實現 遞迴的原理就是棧,每次呼叫乙個方法就會開闢乙個棧幀,而每個棧幀的返回順序也是按照後進先出的順序。所以基於這個原理,任何遞迴能解決的問題都可以轉換為迭代去實現。只需記住一點 棧是先進後出。前序是根 左 右,那麼棧的入棧順序是根 此時進行出棧操作並新增到結果 右 左 中...