用c++编程统计每个结点的孩子结点个数的总代码
时间: 2024-10-26 19:16:32 浏览: 0
在C++中,如果你有一个二叉树结构,比如`TreeNode`,你可以通过递归的方式来遍历并统计每个节点的孩子节点个数。这里是一个简单的例子:
```cpp
#include <iostream>
using namespace std;
// 定义二叉树节点结构
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
int countChildren(TreeNode* node) {
if (node == nullptr) { // 如果节点为空,则返回0
return 0;
} else {
// 返回当前节点左右子节点的数量之和
return 1 + countChildren(node->left) + countChildren(node->right);
}
}
int main() {
// 创建一个示例二叉树
TreeNode* root = new TreeNode(1); // 根节点
root->left = new TreeNode(2); // 左子节点
root->right = new TreeNode(3); // 右子节点
root->left->left = new TreeNode(4); // 左左子节点
root->left->right = new TreeNode(5); // 左右子节点
// 统计根节点及其所有后代的子节点总数
int totalNodes = countChildren(root);
cout << "Total number of child nodes for all nodes is: " << totalNodes << endl;
return 0;
}
```
在这个代码中,`countChildren`函数接收一个`TreeNode`指针作为参数,它会一直递归到叶子节点,然后返回节点的子节点总数。在`main`函数中,我们创建了一个简单的二叉树,并调用这个函数计算总的子节点数。
阅读全文