LeetCode:Convert Sorted Array to Binary Search Tree

来源:互联网 发布:哪里购买淘宝小号 编辑:程序博客网 时间:2024/06/17 06:37

一次AC,很常规的递归调用。

class Solution {public:    TreeNode *sortedArrayToBST(vector<int> &num) {//递归算法,取中间数为根节点,两边的数组递归调用构造左子树和右子树   if(num.empty())//如果为空,则返回空子树        return NULL;    TreeNode *root;   if(num.size()==1)//如果只有一个结点,则直接初始化结点返回   {       root=new TreeNode(num[0]);       return root;   }   int mid;   mid=num.size()/2;   root=new TreeNode(num[mid]);   root->left=sortedArrayToBST(num,0,mid-1);   root->right=sortedArrayToBST(num,mid+1,num.size()-1);   return root;    }private:    TreeNode *sortedArrayToBST(vector<int> &num,int m,int n)//m,n分别为起始下标,终点下标    {        if(n<m)//元素为空            return NULL;        TreeNode *root;        if(n==m)//只有一个元素        {            root=new TreeNode(num[n]);            return root;        }        int mid;        mid=m+(n-m)/2;        root=new TreeNode(num[mid]);        root->left=sortedArrayToBST(num,m,mid-1);        root->right=sortedArrayToBST(num,mid+1,n);        return root;    }};


0 0
原创粉丝点击