LeetCode-108. Convert Sorted Array to Binary Search Tree

来源:互联网 发布:python 极大似然估计 编辑:程序博客网 时间:2024/06/03 16:01

问题:
https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/?tab=Description
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
给定一个数组,数组中的元素是升序排好的,将它转换为高度平衡二叉检索树。
分析:
高度平衡二叉检索树:任意两子树之间的深度之差不大于1。二分法递归构造。如果数组是空的,返回空指针。否则,取出中值,用它构造根节点。然后用数组中左边的元素构造左子树,右边的元素构造右子树。子树的构造是一个递归的过程。
参考C++代码:

/** * 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* sortedArrayToBST(vector<int>& nums) {        return build(nums,0,nums.size()-1);    }    TreeNode* build(vector<int>&nums,int l,int r){        if(l>r) return NULL;        int mid=(l+r)/2;        TreeNode *node = new TreeNode(nums[mid]);        node->left=build(nums,l,mid-1);        node->right=build(nums,mid+1,r);        return node;    }};
0 0