#include <iostream>
#include <queue>
#include <vector>
using namespace std;
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode() : val(0), left(nullptr), right(nullptr) {}
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};
class Solution {
public:
vector<int> levelOrder(TreeNode* root) {
vector<int> result;
if(root == nullptr) {
return result;
}
queue<TreeNode*> que;
int depth = 1;
que.push(root);
while (!que.empty()) {
int count = que.size();
int curLevelMax = INT_MIN;
while(count > 0) {
TreeNode* node = que.front();
que.pop();
curLevelMax = node->val > curLevelMax ? node->val : curLevelMax;
if(node->left)
que.push(node->left);
if(node->right)
que.push(node->right);
count--;
}
result.push_back(curLevelMax);
}
return result;
}
vector<int> getIndex(TreeNode *root, vector<int> target) {
// 先进行bfs
vector<int> bfs_result = levelOrder(root);
//打印bfs结果
cout << "bfs result :" << endl;
for(auto each_col : bfs_result) {
cout << each_col << " " << endl;
}
// 然后依次比较
vector<int> index_result;
int cur_max_depth = -1;
for(auto each_targe : target) {
for(int i = bfs_result.size() - 1; i >= 0; i--) {
if(bfs_result[i] > each_targe) {
cur_max_depth = i+1;
break;
}
}
index_result.push_back(cur_max_depth);
cur_max_depth = -1;
}
return index_result;
}
};
int main() {
std::cout << "Hello, World!" << std::endl;
TreeNode root(3);
TreeNode l1_1(4);
TreeNode l1_2(11);
TreeNode l2_1(3);
TreeNode l2_2(8);
TreeNode l3_1(7);
TreeNode l3_2(5);
root.left = &l1_1;
root.right = &l1_2;
l1_1.left = &l2_1;
l1_2.right = &l2_2;
l2_1.left = &l3_1;
l2_2.right = &l3_2;
Solution s1;
vector<int> target = {6,2,9,7,9};
vector<int> com_result =s1.getIndex(&root, target);
cout << "result " << endl;
for(auto each : com_result)
cout << each << " ";
return 0;
}
leetcode练习题
最新推荐文章于 2024-05-15 15:56:30 发布