108. Convert Sorted Array to Binary Search Tree

来源:互联网 发布:淘宝买的手机如何保修 编辑:程序博客网 时间:2024/06/06 19:46

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */

首先搞清楚一个概念,什么是height balanced BST,翻译为平衡二叉树,首先选择mid,作为根节点,然后接着对其进行迭代,直到达到最后一个节点。


class Solution 

{

     private: TreeNode *mysortedArrayToBST(vector<int> &num,int start,int end)

         {

                  if(start>end)

                  return NULL;

                  if(start==end)

                  return   new TreeNode(num[end]);

                   else

                   int mid=start+((end-start)>>1);

                  TreeNode * temp=new TreeNode(num[mid]);

                  temp->left=mysortedArrayToBST(num,start,mid-1);

                  temp->right=mysortedArrayToBST(num,mid+1,end);

                   return temp;





           }

     public:TreeNode *sortedArrayToBST(vector<int> &num) 

        {

              if(num.size()==0)

                 return NULL;

              else

                return  mysortedArrayToBST(num,0,num.size()-1);

         }






};

原创粉丝点击