首页 » 编程之美 » 正文

[leetcode_108]Convert Sorted Array to Binary Search Tree

注意什么都不输入的越界问题。
每次二分,因为排好序,以中点为根即可。
子树同理。
附上代码:

class Solution {
public:
    TreeNode *sortedArrayToBST(vector<int> &num) {
        // IMPORTANT: Please reset any member data you declared, as
        // the same Solution instance will be reused for each test case.
        if(num.size() <= 0)
            return NULL;
        int size = num.size()-1;
        int mid = size / 2; 
        TreeNode * root = new TreeNode(num[mid]);<br />
        TreeNode * left = GetNode(num,0,mid-1);
        TreeNode * right = GetNode(num,mid+1,size);
        root-&gt;left = left;
        root-&gt;right = right;
        return root;
    }
    TreeNode *GetNode(vector&lt;int&gt; &amp;num,int a,int b)
    {
        if(a &gt; b)
        {
            return NULL;
        }
        int mid = a + (b - a) / 2;
        TreeNode * node = new TreeNode(num[mid]);
        TreeNode * left = GetNode(num,a,mid-1);
        TreeNode * right = GetNode(num,mid+1,b);
        node-&gt;left = left;
        node-&gt;right = right;
        return node;
    }
};

发表评论