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 }
记录学习点滴,如有违规请告知。