葉子節點:指的是沒有左右孩子節點的節點。
圖(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 }