❤ • 1个月前
#include <iostream>
#include <vector>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
TreeNode *buildTree(vector<int> &arr, int &index) {
if (index >= arr.size() || arr[index] == -1) {
index++;
return nullptr;
}
TreeNode *node = new TreeNode(arr[index++]);
node->left = buildTree(arr, index);
node->right = buildTree(arr, index);
return node;
}
bool pd(TreeNode *root, int sum) {
if (root == nullptr)
return false;
if (root->left == nullptr && root->right == nullptr) {
return root->val == sum;
}
return pd(root->left, sum - root->val) || pd(root->right, sum - root->val);
}
int main() {
vector<int> arr;
int num;
while (cin >> num) {
arr.push_back(num);
if (cin.get() == '\n')
break;
}
int tsum;
cin >> tsum;
int index = 0;
TreeNode *root = buildTree(arr, index);
bool vis = pd(root, tsum);
cout << (vis ? "yes" : "no") << endl;
return 0;
}
评论:
请先登录,才能进行评论