NOJ 計算二叉樹葉子節點數目 西工大資料結構

2021-08-18 11:32:45 字數 1250 閱讀 4824

今天晚上沒啥事,洗了洗澡,吃了點東西,又寫了一道,感覺和上一道比較類似。

題目如下:

分析一下題目,它是將乙個先序的一串資料整到二叉樹裡,再找出它的葉節點有幾個。

輸入我決定採用遞迴的方法,每次讀入乙個資料,若是字母說明他是乙個根節點,若是『#』說明上個節點沒有當前分支,返回null即可。由此,ab###可轉換成如下二叉樹:

尋找葉子節點我也選擇遞迴的方法,如果這個節點的左右支都為null,就是個葉節點,直接返回1就可以,否則就依次尋找左支和右支內的葉節點數,返回總結點數,構成遞迴,如下圖:

以下是我的實現:

#include #include struct binarytree

;void run ();

struct binarytree *createnewbinarytree ();

int getamountofleaf (struct binarytree *head);

int main()

struct binarytree *createnewbinarytree ()

else

}void run ()

int getamountofleaf (struct binarytree *head)

if (head->left)

if (head->right)

return nleft+nright;

}

下面是各函式的注釋:

struct binarytree *createnewbinarytree ()

else//若是『#』

}

int getamountofleaf (struct binarytree *head)

if (head->left)//若左支存在

if (head->right)//同上

return nleft+nright;//返回該節點分支中的葉節點總數

}

以上就是我的實現,希望給大家帶來

計算二叉樹葉子結點數目

二叉樹按照二叉鍊錶方式儲存,編寫程式,計算二叉樹中葉子結點的數目。按先序輸入二叉樹各結點,其中 表示取消建立子樹結點。輸出二叉樹中葉子節點的數目。abd eh cf i g include include include define datatype char using namespace st...

計算二叉樹葉子節點的數目

二叉樹採用鏈式儲存結構,設計演算法計算一顆給定的二叉樹中葉子節點的數目 使用遞迴建立並初始化二叉樹。當輸入的資料不為 時,將該元素視為乙個有效的元素,否則置為null。每次遞迴返回當前位置的子樹。計算二叉樹的所有葉子節點的數量。當乙個節點的左孩子和右孩子都為空時。他是葉子節點。使用遞迴如果能找到就返...

輸出二叉樹葉子節點 葉子節點數目 二叉樹高度

include include 輸出二叉樹葉子節點 葉子節點數目 二叉樹高度 include typedef int datatype int count 0 用於統計葉子節點的數目 typedef struct node bitnode,bittree void creatbitree bittr...