许诺 • 1天前
#include <iostream>
#include <vector>
#include <queue>
#include <sstream>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
TreeNode* buildTree(const vector& nodes, int& index) {
if (index >= nodes.size() || nodes[index] == -1) {
index++;
return nullptr;
}
TreeNode* root = new TreeNode(nodes[index]);
index++;
root->left = buildTree(nodes, index);
root->right = buildTree(nodes, index);
return root;
}
int sumOfLeftLeaves(TreeNode* root) {
if (!root) return 0;
int sum = 0;
if (root->left && !root->left->left && !root->left->right) {
sum += root->left->val;
}
sum += sumOfLeftLeaves(root->left);
sum += sumOfLeftLeaves(root->right);
return sum;
}
int main() {
string line;
getline(cin, line);
istringstream iss(line);
vector<int> nodes;
int num;
while (iss >> num) {
nodes.push_back(num);
}
int index = 0;
TreeNode* root = buildTree(nodes, index);
cout << sumOfLeftLeaves(root) << endl;
return 0;
}
评论:
请先登录,才能进行评论