convert sorted Array to BST

感觉刷了这么久的题好像有一点进入状态了...现在做题思路比最开始快了很多,这题基本上3分钟就做完了。


大概思路是要做一个root, 一个left subtree, right subtree. 但是我一开始只有一个function,我发现要recursion的时候, array不是很好取middle point。 因为比如最开始Array是[1,3,4,5,6,7,8,9]. 第一次mid point拿到root以后,要把middle point的左右分成两个子array 继续recursion, 类似[1,3,4,5], [7,8,9] 这样。 这个时候就必须需要用到另一个function了,这样你才可以多允许几个参数。

还有一个比较tricky的地方在于, middle point怎么取。

比如说odd number elements in array, array size =11. 那么很自然取第6个number,这样left 5 个, right 5个。

但是如果是even number elements in array. array size = 10. 怎么取?

[1,2,3,4,5,6,7,8,9,10]

我的做法是 (start + array.len-1)/2  不过呢。。我做的时候也没细想。。但是就直接pass test了。不过分析了一下,如果不specify end point为 array.len-1. 之后recursion 到一定时候会array index out of bounds

你可能感兴趣的:(convert sorted Array to BST)