【发布时间】:2017-05-15 07:49:53
【问题描述】:
如何将有序的双向链表转化为平衡的二叉搜索树。
我正在考虑以与将数组转换为平衡 BST 相同的方式执行此操作。 找到中心,然后递归转换DLL的左边部分和右边部分。 例如,
1 2 3 4 5 => 1 2 (3) 4 5
=>
3
/ \
2 4
/ \
1 5
这导致递归 T(n) = 2T(n/2) + O(n)。 O(n) 用于寻找中心。 因此时间复杂度为 O(nlogn)。 我想知道是否有一种算法可以在 O(n) 中执行此操作。
【问题讨论】:
标签: algorithm binary-tree doubly-linked-list