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