feat: 108_conver_sorted_array_to_binary_search_tree
This commit is contained in:
parent
4f2d4f58de
commit
c00076fa29
41
108_convert_sorted_array_to_binary_search_tree/main.cpp
Normal file
41
108_convert_sorted_array_to_binary_search_tree/main.cpp
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#include <bits/stdc++.h>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
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:
|
||||||
|
TreeNode *sortedArrayToBST(vector<int> &nums) {
|
||||||
|
TreeNode *root = new TreeNode();
|
||||||
|
appendArrayToNode(nums, root);
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
void appendArrayToNode(vector<int> &nums, TreeNode *root) {
|
||||||
|
int mid = nums.size() / 2;
|
||||||
|
root->val = nums[mid];
|
||||||
|
|
||||||
|
if (nums.size() == 1) return;
|
||||||
|
|
||||||
|
vector<int> leftNums, rightNums;
|
||||||
|
copy(nums.begin(), nums.begin() + mid, back_inserter(leftNums));
|
||||||
|
copy(nums.begin() + mid + 1, nums.end(), back_inserter(rightNums));
|
||||||
|
|
||||||
|
if (!leftNums.empty()) {
|
||||||
|
root->left = new TreeNode();
|
||||||
|
appendArrayToNode(leftNums, root->left);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!rightNums.empty()) {
|
||||||
|
root->right = new TreeNode();
|
||||||
|
appendArrayToNode(rightNums, root->right);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
Loading…
x
Reference in New Issue
Block a user