C语言编程实现,已知一颗以二叉链表存储的二叉树,int型,求该二叉树中度为1的个数
时间: 2025-01-05 15:38:26 浏览: 8
在C语言中,如果需要统计一个二叉链表存储的二叉树中度为1的节点个数,可以采用递归的方式遍历整个树。因为度为1的节点要么是左孩子,要么是右孩子,而且它们都只有一个孩子,所以在访问每个节点的时候检查它是否有左子结点或右子结点即可。
下面是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
int countDegreeOne(TreeNode* root) {
if (root == NULL) {
return 0; // 如果当前节点为空,返回0
}
// 如果左右子节点都有,则度为2;若只有一个,则度为1
if (root->left && root->right) {
return 1 + countDegreeOne(root->left) + countDegreeOne(root->right);
} else if (root->left || root->right) {
return 1 + countDegreeOne(root->left ? root->left : root->right); // 只有一个子节点的情况
} else {
return 0; // 没有子节点,度为0
}
}
// 主函数示例
int main() {
// 假设已经构建好了一个二叉树,这里省略了具体的构造过程
TreeNode* root = ...;
int degreeOneCount = countDegreeOne(root);
printf("度为1的节点个数为:%d\n", degreeOneCount);
return 0;
}
```
阅读全文