❤ • 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;
}
评论:
请先登录,才能进行评论