AC

 •  20天前


#include <bits/stdc++.h>
using namespace std;

struct TreeNode {
	int val;
	TreeNode *left;
	TreeNode *right;
	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};


TreeNode *buildTree(const vector<int> &arr, int &id) {
	if (id >= arr.size() || arr[id] == -1) {
		id++;
		return nullptr;
	}
	TreeNode *root = new TreeNode(arr[id]);
	id++;
	root->left = buildTree(arr, id);
	root->right = buildTree(arr, id);
	return root;
}

vector<int> lvfind(TreeNode *root) {
	vector<int> res;
	if (root == nullptr) {
		return res;
	}
	if (root->left == nullptr && root->right == nullptr) {
		res.push_back(root->val);
		return res;
	}
	vector<int> lLeaves = lvfind(root->left);
	res.insert(res.end(), lLeaves.begin(), lLeaves.end());
	vector<int> rLeaves = lvfind(root->right);
	res.insert(res.end(), rLeaves.begin(), rLeaves.end());
	return res;
}

int main() {
	vector<int> Tree_1, Tree_2, leave1, leave2;
	int t;


	while (cin >> t) {
		Tree_1.push_back(t);
		if (cin.get() == '\n')
			break;
	}
	while (cin >> t) {
		Tree_2.push_back(t);
		if (cin.get() == '\n')
			break;
	}
	int id = 0;
	TreeNode *root1 = buildTree(Tree_1, id);
	leave1 = lvfind(root1);
	id = 0;
	TreeNode *root2 = buildTree(Tree_2, id);
	leave2 = lvfind(root2);

	if (leave1 == leave2) {
		cout << "yes";
	} else {
		cout << "no";
	}
	return 0;
}


评论:

请先登录,才能进行评论