Convert Sorted Array to Binary Search Tree
Q:
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
A:
跟上篇文章类似,直接贴吧。
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode *sortedArrayToBST(vector<int> &num) { // Start typing your C/C++ solution below // DO NOT write int main() function return SortedArrayToBST(num, 0, num.size() - 1) } private: TreeNode* SortedArrayToBST(const vector<int>& arr, int begin, int end) { if (begin > end) return NULL; int mid = (end + begin) / 2; TreeNode* root = new TreeNode(arr[mid]); if (begin == end) return root; TreeNode* left = SortedArrayToBST(arr, begin, mid - 1); TreeNode* right = SortedArrayToBST(arr, mid + 1, end); root->left = left; root->right = right; return root; } };
Passion, patience, perseverance, keep it and move on.

浙公网安备 33010602011771号