题目:Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
该题目可以使用二分法,代码如下:
class Solution {
public:
TreeNode* sortedArrayToBST(
vector<int>& nums) {
return sortedArrayToBST(nums.begin(), nums.end());
}
private:
template <
class InputIterator>
TreeNode* sortedArrayToBST(InputIterator first, InputIterator last) {
if (first == last)
return nullptr;
auto size = distance(first, last);
auto mid = next(first, size /
2);
auto left_tree = sortedArrayToBST(first, mid);
auto right_tree = sortedArrayToBST(next(mid), last);
TreeNode* root =
new TreeNode{*mid};
root -> left = left_tree;
root -> right = right_tree;
return root;
}
};
转载请注明原文地址: https://ju.6miu.com/read-7847.html