|
|
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
Есть некое дерево Tree. Каким образом можно создать (к примеру) ветвь root\Companies\Oracle\Java без перебора item-ов этого дерева? При условии что, структура root\Companies уже существует? Или мне придется встать на root , затем итератором пройтись сверху вниз, проверить не равен ли текущий элемент "Companies", и если равен, то создать item "Oracle", а затем item "Java" ? Я изобретаю велосипед или есть другое решение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 07:01 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
MAULER, Во-первых стоит убедится что это не превентивная оптимизация, так как полный перебор для 2х-3х элементов может вдруг оказаться быстрее какого-то другого решения. Во-вторых существует масса способов представления дерева. Например: https://en.wikipedia.org/wiki/Trie https://en.wikipedia.org/wiki/Y-fast_trie https://en.wikipedia.org/wiki/Heap_(data_structure) и прочие. Разные способы оптимизированы под разные операции. Если поиск и вставка являются у вас узким местом, то стоит искать соответственно структуру оптимизированную под эту задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 10:04 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 10:34 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczMAULER, Во-первых стоит убедится что это не превентивная оптимизация, так как полный перебор для 2х-3х элементов может вдруг оказаться быстрее какого-то другого решения. Во-вторых существует масса способов представления дерева. Например: https://en.wikipedia.org/wiki/Trie https://en.wikipedia.org/wiki/Y-fast_trie https://en.wikipedia.org/wiki/Heap_(data_structure) и прочие. Разные способы оптимизированы под разные операции. Если поиск и вставка являются у вас узким местом, то стоит искать соответственно структуру оптимизированную под эту задачу. целая наука с этими деревьями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 12:57 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
MAULERцелая наука с этими деревьями. Ну, есть более простые решения. Отсортировать дерево и искать детей двоичным поиском. Либо использовать LinkedHashSet для хранения списка детей. Но сложно что-то конкретное советовать, не понимая зачем оно вообще понадобилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 13:01 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
Я себе так понимаю его вопрос. Он хочет сделать Код: java 1. при этом гарантировать что для поиска узла Companies не надо будет бегать линейным поиском. Вопрос странный. Можно получить 1 раз узел Companies (любым способом) и спокойно дальше себе толкать листья в ветки в него. Возможно он хочет некий хеш-поиск или некие гарантии быстроты для рандомного 1-го аргумента в addNode но не знает как его сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 13:14 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
MAULERЯ изобретаю велосипед или есть другое решение? деревья и списки бывают разные. Чтобы не делать велосипед - бери библиотечное дерево. Там должно быть API с всякими вкусностями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 13:15 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
mayton, ему сюда Задачка для собеседования : ArrayList vs LinkedList (1...23,24,25,26) только про дерево. Пока непонятно что он хочет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 13:18 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
Petro123, Задачка простая для понимания и сложновато (для меня) реализуема. Есть таблица в одном поле которой хранятся листья и ветви одного дерева: root\Companies\Oracle\Java root\Companies\Oracle\Primavera root\Companies\Microsoft root\Companies\Microsoft\Windows root\Companies\Borland root\Companies\Borland\Pascal ... надо построить дерево читая последовательно записи таблицы. К примеру, после прочтения первой записи, должна появиться структура: root Companies Oracle Java После прочтения второй записи: root Companies Oracle Java Primavera и т.д. причем, в результате "парсинга" записи надо "пропускать" уже созданные пункты дерева, и создавать новые. Надеюсь понятно объяснил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 14:18 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
эх... табуляция пропала, там отступы должны быть, демонстрирующие "дерево" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 14:20 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
MAULERЕсть таблица )) а раньше нельзя было сказать? MAULERнадо построить дерево читая последовательно записи таблицы. Код: java 1. 2. 3. 4. API субд для деревьев рассматриваем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 14:26 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
MAULERв одном поле которой хранятся листья и ветви одного дерева: не понял. Дай схему таблы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 14:29 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
MAULERчитая последовательно записи таблицы если я правильно понял данный изврат в модели. То одноразово загрузи своё дерево в оперативку или в другую правильную таблицу и потом всё остальное для работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 14:32 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
MAULERэх... табуляция пропала, там отступы должны быть, демонстрирующие "дерево" Хабрахабр различает 4 способа хранения деревьев в БД. +Я бы еще добавил бесконечное число структур данных в ЯП которые по смыслу есть деревья. +Файловую систему можно вполне рассматривать как дерево. А с твоих слов совершенно (!) непонятно на чем основана у тебя модель хранения. Я говорю хранения потому-что представленеи мы уже как-бе обсудили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 15:22 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
maytonнепонятно на чем основана у тебя модель хранения. на слешах и одинаковости строк между ними)) Почти FAT32 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 15:32 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
Petro123, На самом деле, хранить дерево в таком виде поидумал я. Что то более-менее путное пока в голову не приходит. По факту у меня на gwt фреймворке написан мини-редактор, который умеет городить деревья Произвольной вложенности. И такое вот дерево из памяти надо както перенести в таблицу базы. Пихать xml в таблицу - не вариант, т.к есть перспектива поиска ... Вот пока придумал хранить так ну и читать также. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 18:36 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
MAULERНа самом деле, хранить дерево в таком виде поидумал я. Ты придумал Materialized Path ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 18:47 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
maytonMAULERНа самом деле, хранить дерево в таком виде поидумал я. Ты придумал Materialized Path ? На момент придумывания я этого не знал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 18:53 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
MAULERНа момент придумывания я этого не знал и не узнаешь никогда. Так как ты не читал что тут все тебе написали....как хранят деревья. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 19:01 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
Petro123, Обязательно прочту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2016, 19:08 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
maytonВозможно он хочет некий хеш-поиск Имея построенное дерево пытаться сделать хеш поиск мягко говоря странно. С другой стороны дерево может быть не упорядочено внутри узла. Там да можно городить все, что угодно. :) Всего-то переделать так, чтоб наследники хранились не в списке, а в HashMap. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2016, 11:36 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевmaytonВозможно он хочет некий хеш-поиск Имея построенное дерево пытаться сделать хеш поиск мягко говоря странно. С другой стороны дерево может быть не упорядочено внутри узла. Там да можно городить все, что угодно. :) Всего-то переделать так, чтоб наследники хранились не в списке, а в HashMap. :) Я где-то читал что файловые системы ext3/ext4 предварительно хешируют имена в директориях для более быстрого доступа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2016, 12:26 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
MAULERпричем, в результате "парсинга" записи надо "пропускать" уже созданные пункты дерева, и создавать новые. Так это почти любое дерево умеет. Даже такое. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2016, 13:32 |
|
||
|
Иерархическое дерево Tree. Есть ли способ создать ветку без предварительного перебора?
|
|||
|---|---|---|---|
|
#18+
maytonЯ где-то читал что файловые системы ext3/ext4 предварительно хешируют Так это и есть внутри узла. И они там дерево строят, обычно. Ибо хеш на все случаи жизни плохо подбирается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2016, 13:34 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39229837&tid=2124099]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
69ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 221ms |
| total: | 415ms |

| 0 / 0 |
