❤ • 1个月前
#include <bits/stdc++.h>
using namespace std;
vector<int> arr;
struct TreeNode {
int val;
TreeNode *left, *right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
TreeNode *buildTree(const vector<int> &arr, int id) {
if (id >= arr.size())
return nullptr;
TreeNode *root = new TreeNode(arr[id]);
root->left = buildTree(arr, id * 2);
root->right = buildTree(arr, id * 2 + 1);
return root;
}
void lvfind(TreeNode *root, int h, int &minn, int &maxval) {
if (!root)
return;
queue<TreeNode *> q;
q.push(root);
while (!q.empty()) {
size_t lvsize = q.size();
int sum = 0;
for (size_t i = 0; i < lvsize; ++i) {
TreeNode *cur = q.front();
sum += cur->val;
if (cur->left)
q.push(cur->left);
if (cur->right)
q.push(cur->right);
q.pop();
}
if (sum > maxval) {
maxval = sum;
minn = h;
}
h++;
}
}
int main() {
int n;
cin >> n;
arr.resize(n + 1);
for (int i = 1; i <= n; ++i) {
cin >> arr[i];
}
TreeNode *root = buildTree(arr, 1);
int h = 1, maxval = INT_MIN, minn = 1;
lvfind(root, h, minn, maxval);
cout << minn << endl;
return 0;
}
评论:
请先登录,才能进行评论