今天晚上沒啥事,洗了洗澡,吃了點東西,又寫了一道,感覺和上一道比較類似。
題目如下:
分析一下題目,它是將乙個先序的一串資料整到二叉樹裡,再找出它的葉節點有幾個。
輸入我決定採用遞迴的方法,每次讀入乙個資料,若是字母說明他是乙個根節點,若是『#』說明上個節點沒有當前分支,返回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...