统计二叉树度为2的结点数
时间: 2024-01-23 10:06:13 浏览: 125
一个二叉树的度是指其子节点的个数,因此度为2的结点是拥有两个子节点的结点。统计二叉树度为2的结点数可以使用递归的方法来实现。具体步骤如下:
1. 如果二叉树为空,返回0。
2. 如果二叉树的根节点的度为2,那么度为2的结点数为1,否则度为2的结点数为0。
3. 统计二叉树左子树中度为2的结点数。
4. 统计二叉树右子树中度为2的结点数。
5. 返回度为2的结点数的总和。
下面是一个示例的C++代码:
```cpp
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
int countDegree2Nodes(TreeNode* root) {
if (root == nullptr) {
return 0;
}
int count = 0;
if (root->left != nullptr && root->right != nullptr) {
count = 1;
}
int leftCount = countDegree2Nodes(root->left);
int rightCount = countDegree2Nodes(root->right);
return count + leftCount + rightCount;
}
```
在上面的代码中,我们定义了一个名为`countDegree2Nodes`的函数,它接受一个指向二叉树根节点的指针,并返回二叉树中度为2的结点数。我们首先检查根节点是否拥有两个子节点,如果是,则将`count`计数器加1。然后我们递归地调用函数来统计左子树和右子树中度为2的结点数,最后将它们加起来并返回。
阅读全文