c++统计二叉树度为2的结点个数
时间: 2024-11-21 13:21:44 浏览: 22
在 C++ 中,要统计二叉树中度为 2 的节点(即有两个子节点的节点),你可以遍历整个二叉树并计数。这通常需要递归,因为每个节点都有左右两个子节点,我们可以在访问每个节点时检查其左子节点和右子节点是否都存在。
以下是一个简单的步骤说明:
1. 定义一个二叉树节点结构体,包含整数值和指向左右子节点的指针。
```cpp
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
```
2. 写一个递归函数,该函数接受一个节点作为输入,并返回度为 2 的节点的数量。如果当前节点不是 null,则递归地计算左右子节点的度,并加上当前节点自身度为 2 的情况。
```cpp
int countDegreeTwo(TreeNode* root) {
if (root == nullptr) return 0; // 空节点不计数
int leftDegree = (root->left != nullptr) ? 1 : 0;
int rightDegree = (root->right != nullptr) ? 1 : 0;
if (leftDegree && rightDegree) ++count; // 当前节点度为 2
return leftDegree + rightDegree + countDegreeTwo(root->left) + countDegreeTwo(root->right);
}
```
3. 最后,在主程序中创建一个二叉树实例并调用上述函数来获取结果。
```cpp
int main() {
// 初始化并构建你的二叉树
TreeNode* tree = ...;
int result = countDegreeTwo(tree);
std::cout << "二叉树中有 " << result << " 个度为 2 的节点.\n";
return 0;
}
```
阅读全文