c++實現求二叉樹葉子節點的數目


葉子節點:指的是沒有左右孩子節點的節點。

 

 

 圖(1)葉子節點數為3

 1 #include<iostream>
 2 using namespace std;
 3 
 4 //二叉樹節點
 5 struct BinaryNode
 6 {
 7     char ch;
 8     BinaryNode* lchild;
 9     BinaryNode* rchild;
10 };
11 void CaculateLeafNum(BinaryNode* root);
12 int Leaf_Count = 0;  //不能定義在CaculateLeafNum()函數內。
13 void CaculateLeafNum(BinaryNode* root) {
14     if (!root) return;
15     if (root->lchild == NULL && root->rchild == NULL) Leaf_Count++;
16 
17     CaculateLeafNum(root->lchild);
18     CaculateLeafNum(root->rchild);
19 }
20 
21 //初始化二叉樹
22 void CreateBinaryTree() {
23     BinaryNode node1 = { 'A',NULL,NULL };
24     BinaryNode node2 = { 'B',NULL,NULL };
25     BinaryNode node3 = { 'C',NULL,NULL };
26     BinaryNode node4 = { 'D',NULL,NULL };
27     BinaryNode node5 = { 'E',NULL,NULL };
28     BinaryNode node6 = { 'F',NULL,NULL };
29     BinaryNode node7 = { 'G',NULL,NULL };
30     BinaryNode node8 = { 'H',NULL,NULL };
31     //建立節點關系
32     node1.lchild = &node2;
33     node1.rchild = &node6;
34     node2.rchild = &node3;
35     node3.lchild = &node4;
36     node3.rchild = &node5;
37     node6.rchild = &node7;
38     node7.lchild = &node8;
39     CaculateLeafNum(&node1);  //調用函數
40     cout << "Num of Leaf:" << Leaf_Count << endl;
41 }
42 //二叉樹遍歷
43 
44 int main() {
45     CreateBinaryTree();
46 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM