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;
  }
};

 

posted @ 2013-06-26 12:26  dmthinker  阅读(92)  评论(0)    收藏  举报