pta 叶节点求和c语言
时间: 2024-09-29 19:15:36 浏览: 37
PTA(People Who Code Together,编程马拉松团队)叶节点求和通常是指在一个树结构(如二叉树、平衡树等)中,找到所有叶子节点(没有子节点的节点)的数值之和。在C语言中,你可以通过遍历这个树来实现。这里是一个简单的示例,假设我们有一个二叉树结构,每个节点包含一个整数值:
```c
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 函数用于递归求解叶节点和
int sumLeafNodes(TreeNode* root) {
if (root == NULL) { // 如果节点为空,则返回0
return 0;
} else if (root->left == NULL && root->right == NULL) { // 如果当前节点是叶节点,累加其值
return root->val;
} else { // 否则,对左子树和右子树分别递归求和
return sumLeafNodes(root->left) + sumLeafNodes(root->right);
}
}
```
在这个函数中,首先检查当前节点是否为空,如果是空节点则返回0。如果当前节点是叶节点(即左右子节点都为空),就直接加上其值。如果不是叶节点,就对左右子树继续递归求和。
相关问题
c语言数组求和pta
以下是两种C语言数组求和的例子:
1.使用循环累加数组元素的值
```c
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += arr[i];
}
printf("数组元素的和为:%d\n", sum); // 输出:15
return 0;
}
```
2.使用指针遍历数组并累加元素的值
```c
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int *p = arr;
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += *(p + i);
}
printf("数组元素的和为:%d\n", sum); // 输出:15
return 0;
}
```
pta兔子繁衍问题c语言
在C语言中,如果我们想要模拟PTA(家长教师协会)兔子繁殖的问题,通常会涉及经典的斐波那契数列和递归算法。这个问题通常是用来演示动态规划或递归思想的一个例子。假设有两只兔子,每个月可以生一对新兔子,新出生的兔子从第二个月开始也产仔。
以下是简化版的C语言代码示例:
```c
#include <stdio.h>
// 定义兔子繁殖函数
int rabbit_population(int month) {
// 父母兔子的数量
int parents = 2;
// 新生兔子数量
int newborns = 0;
// 判断月份是否大于等于第2个月
if (month >= 2) {
newborns = parents; // 第二个月开始有新生
}
// 如果是第3个月或之后,计算总数量(父母加上新生)
if (month >= 3) {
parents += newborns;
}
return parents;
}
int main() {
int month = 8; // 想要知道8个月后的兔子数量
printf("8个月后PTA兔子的数量为:%d\n", rabbit_population(month));
return 0;
}
```