1. 程式人生 > 其它 >二叉樹:葉子結點數

二叉樹:葉子結點數

問題描述:

目的:使用C++模板設計二叉樹的抽象資料型別(ADT)。並在此基礎上,使用二叉樹ADT的基本操作,設計並實現簡單應用的演算法設計。

內容:(1)請參照連結串列的ADT模板,設計二叉樹的抽象資料型別。(由於該環境目前僅支援單檔案的編譯,故將所有內容都集中在一個原始檔內。在實際的設計中,推薦將抽象類及對應的派生類分別放在單獨的標頭檔案中。參考教材、課件,以及網盤中的連結串列ADT原型檔案,自行設計二叉樹的ADT。)

注意:二叉樹ADT的基本操作的演算法設計很多要用到遞迴的程式設計方法。

(2)ADT的簡單應用:使用該ADT設計並實現若干應用二叉樹的演算法設計。

應用2:要求設計一個遞迴演算法,計算二叉樹中葉子結點的數目。二叉樹的儲存結構的建立參見二叉樹應用1。

參考函式原型:

//統計二叉樹葉子的數目 (遞迴函式的外殼)

template

int LeafCount( BinaryTree &T );

//統計二叉樹葉子的數目 (遞迴函式)

template

int LeafCount_Cursive( BinaryTreeNode *root, int &sum); //採用先序遍歷的遞迴演算法

輸入說明:

第一行:表示無孩子或指標為空的特殊分隔符

第二行:二叉樹的先序序列(結點元素之間以空格分隔)

輸出說明:

第一行:葉子結點的數目

輸入範例:

#
A B # C D # # E # # F # G # H # # #

輸出範例:

3