DS之求解二叉樹的葉子結點和深度

2021-07-02 14:56:09 字數 2318 閱讀 1736

這一次需要用到的是二叉樹的相關知識,具體的解釋會在後面的部落格講述。

如果實現上面的功能就先要構造二叉樹以及創造二叉樹,還需要求解葉子結點個數函式以及深度函式,這都需要自己去在資料結構的要求中實現。

首先來看二叉樹的二叉鍊錶的儲存表示:

typedef struct bitnode//重新定義二叉樹的二叉鍊錶的結構

bitnode,*bitree;

這個結構表示二叉鍊錶的資料域和左右孩子指標域。

再來看看需要實現功能的前期準備:

//0前期準備

#include #include using namespace std;

#define ok 1

#define false 0

#define true 1

#define error 0

#define overflow -2

typedef char telemtype;//重新定義char為telemtype

typedef int status;//重新定義int為status

typedef struct bitnode//重新定義二叉樹的二叉鍊錶的結構

bitnode,*bitree;

再者就是需要二叉樹的二叉鍊錶的基本操作1:

status createbitree(bitree &t)//按先序次序輸入二叉樹中結點的值(乙個字元),空格字元表示空樹

else

t->data=a[i];//生成根結點

createbitree(t->lchild);//構造左子樹

createbitree(t->rchild);//構造右子樹

}return ok;

}

然後就是要定義求解葉子結點個數的函式:

int leafcount(bitree t)//計算樹的葉子結點的個數

else

else }}

再然後就是要定義求解樹深度的函式(兩個):

int get_depth(bitree t)

else

}void get_sub_depth(bitree t,char x)//返回二叉樹深度的函式

if(t->rchild)}}

最後就是主函式中的處理。

完整的求解**為:

#include #include using namespace std;

#define ok 1

#define false 0

#define true 1

#define error 0

#define overflow -2

typedef char telemtype;//重新定義char為telemtype

typedef int status;//重新定義int為status

typedef struct bitnode//重新定義二叉樹的二叉鍊錶的結構

bitnode,*bitree;

status createbitree(bitree &t)//按先序次序輸入二叉樹中結點的值(乙個字元),空格字元表示空樹

else

t->data=a[i];//生成根結點

createbitree(t->lchild);//構造左子樹

createbitree(t->rchild);//構造右子樹

}return ok;

}int leafcount(bitree t)//計算樹的葉子結點的個數

else

else

}}int get_depth(bitree t)

else

}void get_sub_depth(bitree t,char x)//返回二叉樹深度的函式

if(t->rchild)

}}int main()

{ bitree t;//定義二叉樹

createbitree(t);//先序構造二叉樹

cout<

cout<

輸入的資料:先序輸入abc##de#g##f###(#代表空)

這棵樹的圖為:

輸出的結果為:

DS二叉樹 左葉子數量

題目問題 c ds二叉樹 左葉子數量 時間限制 1 sec 記憶體限制 128 mb 提交 388 解決 353 提交 狀態 討論版 題目描述 計算一顆二叉樹包含的葉子結點數量。左葉子是指它的左右孩子為空,而且它是父親的左孩子 建樹方法採用 先序遍歷 空樹用0表示 的方法 輸入第一行輸入乙個整數t,...

DS二叉樹 二叉樹之父子結點

題目描述 給定一顆二叉樹的邏輯結構如下圖,先序遍歷的結果,空樹用字元 0 表示,例如ab0c00d00 建立該二叉樹的二叉鏈式儲存結構。編寫程式輸出該樹的所有葉子結點和它們的父親結點 輸入 第一行輸入乙個整數t,表示有t個二叉樹 第二行起,按照題目表示的輸入方法,輸入每個二叉樹的先序遍歷,連續輸入t...

二叉樹最大葉子結點到最小葉子結點的最短距離

有一棵二叉樹,樹上每個點標有權值,權值各不相同,請設計乙個演算法算出權值最大的葉節點到權值最小的葉節點的距離。二叉樹每條邊的距離為1,乙個節點經過多少條邊到達另乙個節點為這兩個節點之間的距離。給定二叉樹的根節點root,請返回所求距離。解法 先利用getmaxandmin函式找到葉子結點中最大值和最...