У меня вопрос, например, я хочу реализовать двоичное дерево с массивом. Я хочу понять, что будет индексировать для левого ребенка и дочернего ребенка. Мой массив равен 0. Я хочу реализовать поиск в дереве с помощью массива. Кто-нибудь может мне помочь?вопрос о дереве
ответ
Чтобы реализовать двоичное дерево в виде массива, вы помещаете левый дочерний элемент для узла i
в 2*i+1
и правый ребенок в 2*i+2
.
Так, например, с 6 узлов здесь индексы соответствующего массива
0
|
---------
| |
---1-- --2--
| | | |
3 4 5 6
левый ребенок = родитель * 2 + 1
право ребенка = родитель * 2 + 2
Я полагаю, что это домашнее задание, так что я дам вам понять алгоритм поиска.
Я думаю, что вы ищете кучу. Или, по крайней мере, вы используете дерево, когда структура массива недостаточно для ваших нужд, поэтому вы можете попытаться реализовать дерево внутри массива, но это не имеет большого смысла, поскольку каждый узел содержит ссылки на своих детей без необходимости индексов ,
Но куча представляет собой массив, который также можно рассматривать как двоичное дерево, посмотреть его here. Это дерево в том смысле, что оно организует данные как дерево, но без прямых ссылок на детей, их можно вывести из положения.
- 1. Вопрос о двоичном дереве поиска?
- 2. Вопрос о бинарном дереве поиска
- 3. Вопрос о шаблоне данных иерархии в дереве WPF
- 4. Вопрос о получении числа узлов в двоичном дереве
- 5. о полном двоичном дереве
- 6. Предзаказ о доставке в дереве
- 7. Вопрос о структуре таблицы MySQL
- 8. Вопрос о алгоритме сортировки кучи
- 9. Вопрос о
- 10. что-то о бинарном дереве
- 11. вопросы о двоичном дереве поиска
- 12. Вопрос о форме Silverlight Вопрос
- 13. TortoiseGit - представляющие ветви в дереве - визуальный вопрос
- 14. Быстрый вопрос о минимальных связующих деревьях
- 15. Вопрос о SQL-группировке
- 16. Вопрос о sys.argv (python)
- 17. Вопрос о строковых формах
- 18. Вопрос о Winforms
- 19. Вопрос о семафоре
- 20. Вопрос о peverify ошибок
- 21. Вопрос о конструкторе Singleton
- 22. Вопрос о взаимоотношениях дружбы
- 23. Вопрос о сокетах TCP
- 24. iPhone - вопрос о DrawRect
- 25. простой вопрос о pushViewController
- 26. Вопрос о кодировании JQuery?
- 27. Вопрос о кодировке Mysql
- 28. Вопрос о рубине!
- 29. вопрос о горизонтальном выравнивании
- 30. CSS: вопрос о переключателе
Я думаю, что вы запутались. Куча - это дерево, где значение каждого ребенка меньше (для максимальной кучи) или больше (для минимальной кучи) значение его родителя. Это не имеет никакого отношения к тому, реализовано ли дерево с использованием массива или связанных узлов. – sepp2k
Конечно, это так. Я не сказал, что у кучи не было никаких дополнительных ограничений. Дело в том, что обычно вы не используете массив для хранения двоичного дерева, если это не особый тип двоичного дерева (поэтому я упомянул кучу). Насколько полезно использовать массив для хранения общего двоичного дерева? Операции были бы крайне неэффективными по сравнению с реализацией, в которой использовались ссылки. – Jack
Почему это было бы крайне неэффективно? – danben