统计二叉树度为1的结点个数C语言
时间: 2024-01-25 14:02:02 浏览: 81
erchashu.rar_erchashu_统计 二叉树 结点个数
5星 · 资源好评率100%
以下是统计二叉树度为1的结点个数的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结点类型定义
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 统计二叉树度为1的结点个数
int countDegreeOne(TreeNode *root) {
if (root == NULL) {
return 0;
}
int count = 0;
if (root->left != NULL && root->right == NULL) {
count++;
}
if (root->left == NULL && root->right != NULL) {
count++;
}
count += countDegreeOne(root->left);
count += countDegreeOne(root->right);
return count;
}
int main() {
// 构造二叉树
TreeNode *root = (TreeNode *)malloc(sizeof(TreeNode));
root->val = 1;
TreeNode *node1 = (TreeNode *)malloc(sizeof(TreeNode));
node1->val = 2;
TreeNode *node2 = (TreeNode *)malloc(sizeof(TreeNode));
node2->val = 3;
TreeNode *node3 = (TreeNode *)malloc(sizeof(TreeNode));
node3->val = 4;
TreeNode *node4 = (TreeNode *)malloc(sizeof(TreeNode));
node4->val = 5;
root->left = node1;
root->right = node2;
node1->left = node3;
node2->left = node4;
// 统计二叉树度为1的结点个数并输出
int count = countDegreeOne(root);
printf("Degree 1 node count: %d\n", count);
return 0;
}
```
以上代码中,`countDegreeOne`函数接收一个二叉树的根节点指针,返回二叉树度为1的结点个数。在函数中,通过递归遍历二叉树,对于每个结点,判断其左右子树是否为空,若其中一个为空,则该结点度为1,统计个数并递归遍历其左右子树。最后返回统计结果即可。在`main`函数中,我构造了一个简单的二叉树,并调用`countDegreeOne`函数统计度为1的结点个数并输出。
阅读全文