資料結構測試題(樹的相關操作)

2021-09-24 02:26:01 字數 1433 閱讀 1772

假設二叉樹的資料元素為字元,採用二叉鏈式儲存結構。二叉樹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)=3

height(b)=2

height(d)=1

height(e)=1

height(c)=2

height(f)=1

height(a)=3

height(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...