108. Convert Sorted Array to Binary Search Tree

来源:互联网 发布:小满科技 数据怎么样 编辑:程序博客网 时间:2024/04/30 21:51

题目:Convert Sorted Array to Binary Search Tree

原题链接:https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/
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) {} * }; */class Solution {public:    TreeNode* insert(vector<int>& nums, int st, int ed) {        if (st > ed) return NULL;        int mid = st + (ed - st) / 2;        TreeNode* p = new TreeNode(nums[mid]);        p->left = insert(nums, st, mid - 1);        p->right = insert(nums, mid + 1, ed);        return p;    }    TreeNode* sortedArrayToBST(vector<int>& nums) {        if (nums.size() == 0) return NULL;        TreeNode* root = insert(nums, 0, nums.size() - 1);        return root;    }};
0 0
原创粉丝点击