编写算法,利用二叉树遍历计算二叉树中度为1的结点个数。函数原型如下: int Count(BTNode *root); //root为二叉树根结点指针
时间: 2024-11-27 21:19:45 浏览: 11
要编写一个算法来计算二叉树中度为1的结点个数,我们可以采用递归的方式遍历二叉树。首先判断当前节点是否为空,然后分别处理左右子节点,并记录遇到的度为1的节点计数。
```cpp
// 定义BTNode结构体
struct BTNode {
int data;
BTNode* left;
BTNode* right;
};
int Count(BTNode* root) {
if (root == nullptr) return 0; // 如果根节点为空,则返回0
// 如果当前节点只有一个子节点,那么它的度就是1
if (root->left == nullptr && root->right != nullptr)
return 1;
else if (root->left != nullptr && root->right == nullptr)
return 1;
// 如果两个子节点都不为空,说明度不是1
return Count(root->left) + Count(root->right);
}
```
这个函数会遍历整个二叉树并返回所有度为1的节点总数。对于每一个节点,我们检查它是否有左孩子但没有右孩子,或者有右孩子但没有左孩子,这两种情况都代表该节点的度为1。
阅读全文