假設二叉樹的資料元素為字元,採用二叉鏈式儲存結構。二叉樹adt實現的大部分**已經給出,其中採用完全前序序列建立二叉樹。請補充寫出下列兩個操作函式。 注意: 答案區只寫出兩個函式,其他**不允許修改和重寫、提交!
(1)計算以某結點為根的二叉樹的高度;
(2)以前序順序輸出各個元素結點為根的子樹的高度;
例如:有如右圖的二叉樹
輸入:abd@@e@@c@f@@
輸出:height(a)=3
height(b)=2
height(d)=1
height(e)=1
height(c)=2
height(f)=1
已給出的**如下:
#include
#include
using namespace std;
//資料元素型別
typedef char elemtype;
//二叉樹結點定義
typedef struct treenode
treenode;
//二叉樹類
class binarytree
;~binarytree()
void makeempty(treenode *t);
void create( ) ; //完全前序建立二叉樹,空指標用@表示
treenode *cp_create(treenode *t);
//****** 要補充的函式height ********
int height(treenode *t) ; //求二叉樹的高度
void output() ;
//****** 要補充的函式 pro_height **********
void pro_height(treenode *t); // 前序順序輸出各個元素結點為根的子樹的高度
//二叉樹置空
void binarytree::makeempty(treenode *t)
///線序遍歷輸出樹的高度
void binarytree::pro_height(treenode* t)
輸入期望輸出
實際輸出
abd@@e@@c@f@@
height(a)=3height(b)=2
height(d)=1
height(e)=1
height(c)=2
height(f)=1
height(a)=3height(b)=2
height(d)=1
height(e)=1
height(c)=2
height(f)=1
樹的相關小測試 題解
第一題和第三題起初想法都是構建樹的相關資料結構,但通過挖掘題目的性質,尤其是輸出要求,無需搭建一棵完整的樹。給定一顆二叉樹,要求從下至上按層遍歷二叉樹,每層的訪問順序是從左到右,每一層單獨輸出一行。輸入形式為廣義表,它表示的二叉樹,結點元素型別為整型,且都大於0,例如 1 2 3 4,5 6 7,8...
資料結構 ch2測試題
1.單選題 4 分 用單鏈表方式儲存的線性表,儲存每個結點需要兩個域,乙個是資料域,另乙個是 b a.當前結點的所在位址 b.後繼結點的所在位址 c.空指標域 d.空閒域 儲存結點 資料域 指標域 空指標 null,沒有基型別的指標,如malloc建立的指標。2.不帶頭結點的單鏈表head為空的判定...
資料結構 樹的遍歷相關筆試題
一顆二叉樹的先序遍歷 abdecfg 中序遍歷 dbeafcg 後序遍歷 debfgca。對於二叉樹的遍歷在之前的部落格中有介紹 根據先序遍歷可知根節點為a 根據中序遍歷可知dbe為a的左子樹,fcg為a的右子樹 遞迴實現,把dbe當作一顆新樹,把fcg當作一顆新樹 在遞迴的過程當中輸出後序。inc...