一尘不染

在线性时间内从排序数组构建红黑树

algorithm

我知道如何用n个插入来构建它(每个插入具有O(log(n))效率)(n * log(n))总体上,我也知道2-3-4树的等效结构也可以用排序数组的线性时间。有人可以提供有关红黑版本的简单说明吗?


阅读 232

收藏
2020-07-28

共1个答案

一尘不染

无论您要构建哪种BST。算法将是相同的。只需要建立平衡的二叉树。

  1. 将中间元素放置到当前位置
  2. 地点[开始;中间)到左侧子树的元素。
  3. 将元素(中间;结尾)放置在右侧子树中。

这是O(N)算法。可以看出,结果树将是平衡的。

我们有平衡树,因此根据定义:

长度(最长路径)-长度(最短路径)<= 1

因此,您需要将所有节点标记为黑色,但树中最深的节点除外(将其标记为红色)。

2020-07-28