c语言实例代码在一棵以二叉链表表示的二叉树上,统计树中具有度为1的结点数目
时间: 2024-11-15 12:24:02 浏览: 3
在C语言中,统计一棵以二叉链表表示的二叉树中度为1的节点数,可以采用深度优先搜索(Depth-First Search,DFS)的方法遍历树。这里假设每个节点有一个指向左孩子的指针 `left` 和一个指向右孩子的指针 `right`,同时有一个整型变量用于存储节点值。
下面是一个简单的递归函数,它会检查当前节点是否为叶子节点(度为1),如果是就增加计数:
```c
#include <stdio.h>
typedef struct TreeNode {
int val; // 节点值
struct TreeNode* left; // 左孩子指针
struct TreeNode* right; // 右孩子指针
} TreeNode;
int countDegreeOne(TreeNode* root) {
if (root == NULL) { // 如果到达空节点,则返回0
return 0;
}
// 如果当前节点无左右孩子,说明它是度为1的节点
if (root->left == NULL && root->right == NULL) {
return 1;
} else {
// 递归计算左子树和右子树的度1节点数并相加
return countDegreeOne(root->left) + countDegreeOne(root->right);
}
}
// 主函数示例
int main() {
// 初始化你的二叉树...
TreeNode* tree = ...;
int degreeOneCount = countDegreeOne(tree);
printf("The number of nodes with degree 1 is: %d\n", degreeOneCount);
return 0;
}
```
在这个例子中,`countDegreeOne` 函数会遍历整个二叉树,并返回所有度为1的节点的数量。注意,这只是一个基本的解决方案,实际的二叉链表可能会有不同的结构,所以你需要根据实际情况调整这个代码。
阅读全文