2-3 搜索树的文本表示
Textual representation of 2-3 search trees
所以我是盲人并使用屏幕 reader。通过this,我设法了解了二叉树的结构。通过答案中二叉树的结构,我理解了二叉搜索树和二叉堆,以及如何对它们进行插入、查找等操作。然而,当我开始研究 2-3 棵搜索树时,我对它的外观完全感到困惑。假设二叉树的结构如下所示:
//slashes are links
root
/ \
左右
使用这种表示,我了解了在这棵树中递归地插入、删除和搜索。
然而,当涉及到具有三个节点和两个键的树时,我完全迷路了。我完全不知道这棵树应该如何构造,但我认为它看起来像这样。
//slashes are links
root
/ \ /
左中右
我不确定这是否正确。我一直在阅读如何向其插入节点,但解释总是使用 images/graphics 并且很难想象。谁能进一步解释一下?
有很多种表示方式。我建议您尝试的两个是
- 不用键表示节点,而是使用一对键,并显示三个 links:
d,q
/ | \
a g z
- 使用横向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]
所以我是盲人并使用屏幕 reader。通过this,我设法了解了二叉树的结构。通过答案中二叉树的结构,我理解了二叉搜索树和二叉堆,以及如何对它们进行插入、查找等操作。然而,当我开始研究 2-3 棵搜索树时,我对它的外观完全感到困惑。假设二叉树的结构如下所示:
//slashes are links
root
/ \
左右
使用这种表示,我了解了在这棵树中递归地插入、删除和搜索。
然而,当涉及到具有三个节点和两个键的树时,我完全迷路了。我完全不知道这棵树应该如何构造,但我认为它看起来像这样。
//slashes are links
root
/ \ /
左中右
我不确定这是否正确。我一直在阅读如何向其插入节点,但解释总是使用 images/graphics 并且很难想象。谁能进一步解释一下?
有很多种表示方式。我建议您尝试的两个是
- 不用键表示节点,而是使用一对键,并显示三个 links:
d,q / | \ a g z
- 使用横向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]