AC

许诺  •  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;

}


评论:

请先登录,才能进行评论