利用c++实现编写有关二叉树的递归算法: (1)统计二叉树中度为 1 的结点个数;
时间: 2024-11-20 18:37:37 浏览: 35
二叉树遍历 非递归 C++实现代码
5星 · 资源好评率100%
在C++中,我们可以通过递归遍历二叉树的方式来统计度为1的节点个数。度是指节点拥有的子节点的数量,度为1意味着该节点只有一个子节点。
这里是一个简单的函数来完成这个任务,假设`Node`是二叉树节点类,有`left`和`right`两个指针分别指向左子节点和右子节点:
```cpp
int countDegreeOneNodes(Node* root) {
if (!root) return 0; // 空节点不计
// 如果当前节点有两个子节点,则度为2,否则度为1
int degree = root->left ? 1 + (root->right ? 1 : 0) : 0;
// 如果度为1,返回1,否则继续递归计算左子树和右子树的度1节点
return degree == 1 ? 1 : countDegreeOneNodes(root->left) + countDegreeOneNodes(root->right);
}
```
这个函数会先检查当前节点是否有子节点,如果有,它的度就是1加上右边子节点是否存在(如果存在则加1)。然后根据当前节点的度,决定是否返回1(即度为1的情况),并递归地计算左子树和右子树的度1节点。
阅读全文