题目
https://leetcode.com/problems/convert-sorted-list-to-binary-search-tree/description/
想法
感觉是一道很经典的题目..
生成一棵不平衡的,单侧的树,然后旋转嘛?有点傻,不过这也是一个问题,把单侧树转变为平衡树
渐进式的,跟那个随即抽取的有点像,不知道总共有多长
AVL tree和splay tree都忘了,尴尬,不行,复习平衡树,然后再做这道题,同时写一篇博客
这道题,题目的数据结构没有高度,所以判断是否平衡还是个麻烦,而且全部是RR的不平衡,应该有更专属的方式来解决
哎呀,看了别人的答案,无非就是二分、递归建树,自己想的可能有点偏orz
解答
参考了:
JosephTao: Share my JAVA solution, 1ms, very short and concise.
https://leetcode.com/problems/convert-sorted-list-to-binary-search-tree/discuss/35476/Share-my-JAVA-solution-1ms-very-short-and-concise.
|
|
回顾
分治的策略,在这种情况下还是很适用的,一开始觉得链表的话,不好进行分治,但是没想到这个答案竟然是beat 100%,有些吃惊。
学习到了一个二分链表的小trick:
|
|
还是蛮有趣的,如果是自己做的话,肯定是先数一遍size,然后定位到size/2,这样应该会快一点。