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 }

猜你喜欢

转载自www.cnblogs.com/jibisheng/p/12942983.html