[LeetCode] Convert Sorted Array to Binary Search Tree

来源:互联网 发布:餐饮数据图 编辑:程序博客网 时间:2024/06/09 15:00

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

问题描述:将一个已经排好序的数组构建成一棵高度平衡的二叉查找树。

要求二叉查找树高度平衡,那就将中间的节点作为根节点,左边的元素为左子树,右边的元素为右子树,再递归。

class Solution {public:    TreeNode *hBST(vector<int> &num, int start, int end) {        TreeNode *pnode = NULL;        if(start > end)            return NULL;        if(start == end) {            pnode = new TreeNode(num[start]);            return pnode;        }        else {            int i_mid = (start+end)/2;                        pnode = new TreeNode(num[i_mid]);            pnode->left = hBST(num, start, i_mid-1);            pnode->right = hBST(num, i_mid+1, end);            return pnode;        }    }     TreeNode *sortedArrayToBST(vector<int> &num) {        // Note: The Solution object is instantiated only once and is reused by each test case.        return hBST(num, 0, num.size()-1);    }};