叶子节点数计算代码C++
时间: 2024-09-17 13:05:41 浏览: 39
在C++中,叶子节点是指树结构中最底层的节点,它们没有子节点。计算一棵二叉树的叶子节点数通常采用递归的方式,因为二叉树的每个非叶子节点恰好对应两个子节点。以下是简单的C++代码示例:
```cpp
#include <iostream>
class TreeNode {
public:
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
int countLeafNodes(TreeNode* root) {
if (root == nullptr) return 0; // 空节点返回0
else if (root->left == nullptr && root->right == nullptr) // 如果当前节点无子节点,则是叶子节点
return 1;
else
return countLeafNodes(root->left) + countLeafNodes(root->right); // 递归计算左右子树的叶节点之和
}
int main() {
// 创建并初始化树结构
TreeNode* tree = ...; // 根据实际树构建
int leafCount = countLeafNodes(tree);
std::cout << "叶子节点总数: " << leafCount << std::endl;
return 0;
}
```
在这个代码里,`countLeafNodes`函数接收一个树的根节点作为输入,并通过检查节点是否有左、右子节点来确定是否为叶子节点。如果根节点为空则直接返回0;如果既无左也无右子节点,那么它就是一个叶子节点,返回1;否则,递归地计算左子树和右子树的叶子节点数。
阅读全文