假设二叉树采用二叉链存储结构存放,结点值为int类型,用c语言设计一个递归算法求二叉树bt中的所有叶子节点值之和
时间: 2023-05-25 10:06:47 浏览: 125
常用的数据结构的算法,包括二叉树的三种递归和非递归算法,染色问题,八皇后问题,深度广度遍历,约瑟夫环,数值转换,树的高度和叶子节
```
int sumOfLeaves(TreeNode* root) {
if (root == NULL) {
return 0;
}
if (root->left == NULL && root->right == NULL) {
// 叶子节点
return root->val;
}
// 非叶子节点
return sumOfLeaves(root->left) + sumOfLeaves(root->right);
}
```
其中,二叉树结点的定义如下:
```
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
```
解释如下:
1. 若二叉树为空,则叶子节点之和为0,直接返回。
2. 若当前节点为叶子节点,则返回节点值。
3. 若当前节点不是叶子节点,则递归求左子树和右子树的叶子节点之和,并将二者相加返回。
阅读全文