108. Convert Sorted Array to Binary Search Tree

来源:互联网 发布:在app里找淘宝官方客服 编辑:程序博客网 时间:2024/05/01 17:24

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

分析:找到数组的中间数据作为根节点,小于中间数据的数组来构造作为左子树,大于中间数据的数组来构造右子树,递归解法如下

/** * 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) {        // IMPORTANT: Please reset any member data you declared, as        // the same Solution instance will be reused for each test case.        int len = num.size();        if(len == 0)return NULL;        return sortedArrayToBSTRecur(num, 0, len-1);    }    TreeNode *sortedArrayToBSTRecur(vector<int> &num, int istart, int iend)    {        if(istart > iend)return NULL;        int middle = (istart+iend)/2;        TreeNode *res = new TreeNode(num[middle]);        res->left = sortedArrayToBSTRecur(num, istart, middle-1);        res->right = sortedArrayToBSTRecur(num, middle+1, iend);        return res;    }};


0 0
原创粉丝点击