[leetcode]: 108. Convert Sorted Array to Binary Search Tree

来源:互联网 发布:js根据逗号截取字符串 编辑:程序博客网 时间:2024/06/05 20:10

1.题目

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
给一个有序数组,将其转换为一个高度平衡二叉搜索树

2.分析

BST的特点是左节点<根结点<右节点
左右子树平衡的话,尽可能两边的元素个数相近。所以每次选择数组中间的数作为根结点,左边元素分配到左子树,右边的元素分配到右子树。
在一个博客看到这个动图,很形象:
这里写图片描述

3.代码

递归

TreeNode* constructBST(vector<int>& nums, int start, int end) {    if (start > end)        return NULL;    int mid = start + (end - start) / 2;    TreeNode* root = new TreeNode(nums[mid]);    root->left = constructBST(nums, start, mid - 1);    root->right = constructBST(nums, mid + 1, end);    return root;}TreeNode* sortedArrayToBST(vector<int>& nums) {    if (nums.empty())        return NULL;    return constructBST(nums, 0, nums.size() - 1);}
阅读全文
0 0
原创粉丝点击