AC

 •  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;
}

评论:

请先登录,才能进行评论