您的位置:首页 > 其它

Convert Sorted Array to Binary Search Tree

2018-01-18 15:26 549 查看
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

Example 1



题目给定一个元素从小到大排列的数组,要求将数组元素组合成一个BST。 显而易见,我们应该用分治法去解决。数组A[i:j]的中间元素a[(i+j)/2]就是二叉树的根节点。这样递归地去求解就能得到答案,下面是用c语言解决该问题的approach。

struct TreeNode* convert(int* nums int left, int right){
if(left > right)
return NULL;
int mid = (left+right)/2;
struct TreeNode* node = (struct TreeNode*)malloc(sizeof(struct TreeNode));
node->val = nums[mid];
node->left = convert(nums, left, mid-1);
node->right = convert(nums, mid+1, right);

return node;
}
struct TreeNode* sortedArrayToBST(int* nums, int numsSize)
{
return convert(nums, 0, numsSize-1);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode