Это то, как я должен понимать, что такое многоходовое дерево?
В настоящее время я собираюсь реализовать многоцелевое дерево в C++, но я все еще не уверен, что именно они. Я прочитал несколько документов, но я все еще в замешательстве из-за отсутствия картинок или визуализации.
Допустим, я хочу трехстороннее дерево, согласно онлайн-заметкам в Интернете, это означает, что каждый узел может иметь не более 3-1 = 2 элементов, а каждый узел может иметь не более 3 дочерних элементов. Ниже я нарисовал несколько деревьев, в которых я не уверен, являются ли они деревьями с 3 путями. Может ли кто-нибудь подтвердить, что я правильно понимаю? Спасибо!
Кроме того, если у меня есть двухстороннее дерево, значит ли это, что у меня также есть двоичное дерево? Оо?
1 ответ
Я понимаю, что многопотоковое дерево - это число поддеревьев, которое можно пройти из одного узла.
+---+
| D |
+---+
^
|
|
+---+ +------+ +---+
| A | <-- | Root | --> | B |
+---+ +------+ +---+
|
|
V
+---+
| C |
+---+
На приведенной выше диаграмме показано многоходовое дерево, поскольку у корня более 1 дочернего элемента.
Обычно 2 дочерних элемента на узел (кроме листовых узлов) указывают на двоичные деревья.
Существует много разных видов бинарных деревьев.
Смотрите также B-Tree и B* Деревья.
Изменить 1:
Другой вид:
+------------------------+
| Root +
+------------------------+
| | | |
V V V V
+---+ +---+ +---+ +---+
| A | | B | | C | | D |
+---+ +---+ +---+ +---+