假设一个BST在节点中保存整数值。编写一个递归函数,返回其所有节点的数值之和c++
时间: 2024-12-13 09:27:18 浏览: 10
假设我们有一个二叉搜索树(BST),我们可以编写一个递归函数来计算所有节点值的和。这个函数会遍历每个节点,并在两个子节点上递归地进行计算。以下是C++中的代码实现:
```cpp
#include <iostream>
// 定义二叉搜索树节点结构体
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
// 递归函数计算BST节点值总和
int sumOfBST(TreeNode* root) {
if (root == nullptr) { // 如果节点为空,返回0
return 0;
} else if (root->left == nullptr && root->right == nullptr) { // 如果当前节点是叶子节点
return root->val; // 返回该节点的值
} else { // 否则,左子树只包含较小的值,右子树只包含较大的值
return root->val + sumOfBST(root->right); // 遍历右子树并加上当前节点值
}
}
int main() {
// 创建一个示例BST并初始化
// ...
// 调用sumOfBST函数计算节点值总和
int totalSum = sumOfBST(root);
std::cout << "BST的所有节点值之和是: " << totalSum << std::endl;
return 0;
}
```
在这个例子中,`sumOfBST`函数通过检查节点是否为空、是否是叶节点以及递归遍历右子树的方式来计算和。
阅读全文