2-3 搜索树的文本表示

Textual representation of 2-3 search trees

所以我是盲人并使用屏幕 reader。通过this,我设法了解了二叉树的结构。通过答案中二叉树的结构,我理解了二叉搜索树和二叉堆,以及如何对它们进行插入、查找等操作。然而,当我开始研究 2-3 棵搜索树时,我对它的外观完全感到困惑。假设二叉树的结构如下所示:

 //slashes are links
 root
/ \

左右

使用这种表示,我了解了在这棵树中递归地插入、删除和搜索。

然而,当涉及到具有三个节点和两个键的树时,我完全迷路了。我完全不知道这棵树应该如何构造,但我认为它看起来像这样。

 //slashes are links
 root
/ \ /

左中右

我不确定这是否正确。我一直在阅读如何向其插入节点,但解释总是使用 images/graphics 并且很难想象。谁能进一步解释一下?

有很多种表示方式。我建议您尝试的两个是

  1. 不用键表示节点,而是使用一对键,并显示三个 links:
     d,q
    / | \
   a  g  z
  1. 使用横向link表示"sister"节点;当节点有姐妹时,它只有一个 child:
 d - q
 |  / \
 a  g  z

2-3棵树稍微复杂一点

树中的一个节点包含一个或两个键值,以及两个或三个子节点 [分别] 除了叶子。

所以你可以把一个节点想象成一个气泡,里面有一个或两个值和两个或三个向下的箭头。

使用你的符号,它将是

之一
    root
    /   \
left     right

    root
    / | \
left mid right

并添加密钥,例如

     [a]
    /   \
[b,c]     [d]

     [a,b]
    /  |  \
[c] [d,e] [f,g]