Реалізовуємо Бінарне Дерево Пошуку - Для чого потрібні дерева?
Вставка
- Опубліковано 15 чер 2024
- 👉 Приєднуйся до Bobocode Community: www.bobocode.com/
____________________________________________
GitHub: github.com/bobocode-projects
Telegram: t.me/bobocode
LinkedIn: bit.ly/2RWPQF5
Twitter: bit.ly/3vaQiOl
Patreon: / bobocode
Тарас в LinkedIn: bit.ly/2ElWg8J
Тарас в Twitter: bit.ly/33Pmuwg
____________________________________________
Продовжуємо покращувати свої знання та навички по структураx даних. Цього разу розбираємо Binary Search Tree. 💪
00:00 - Intro
00:42 - Структура Дерева
02:31 - Вправа
03:52 - Вузол (Node)
05:33 - insert(T element)
11:54 - contains(T element)
14:41 - depth()
18:23 - inOrderTraversal()
20:35 - of(T... elements)
21:27 - Для чого вправи?
21:57 - Порівняння швидкості
28:40 - Для чого воно треба?
#opensource #java #education
Навіть не віриться, що такий якісний контент по такій темі, доступний українською! Величезне дякую!
А ви уявіть, що це тільки початок 😉
Шикарное видео. Спасибо тебе за колоссальный труд. Слава Украине!
Такі відчуття, як наприкінці классного фільму - отримав массу задоволення під час перегляду, але трохи жалієш що фільм скінчився))) . Велике дякую!
Корисний та інформативний розбір!
Дякую!
Величезне дякую! Надзвичайний матеріал і подача чудова!
прекрасний контент, дякую велике за ці чудові уроки)))
з нетерпінням чекаю відео про hash table
Дякую!
Класна подача матеріалу. Ти мотивуєш!!!
Дякую!
Чітко, ясно і зрозуміло! Дуже дякую!
Клас, дякую за чудово подану інформацію. Якраз готуюсь до співбесід і нагадую собі базову CS
Чудово як завжди. Дякую!
Спочатку навис на реалізації методу depth але потім все зрозумів.
Здається на задньому фоні хтось активно коментував тебе. Впевнений у того малого коментатора є своя думка щодо реалізації бінарного дерева пошуку.
Ага 😂
Наша сила в цей момент - вподобайка 👍 та комент 💬 ! На підтримку Bobocode
Дуже класний лайвкодінг по імплементації BST!
Дякую! Дуже якісно подано!
Как всегда, выше всех похвал!)
Чекаємо ХешМапу!)
CuncurentLinkedHashMapTreeSetArray :)
@@caffeinejavacode1475 ууууу.
Вау, такий якісний контент та ще й українською. Лайк і підписка)
На глибині дерева заглох, розумів, що треба обирати найбільше серед гілок, але точно не додумався до подвійної рекусрії в такй обгортці, мабуть точніше бінарної рекурсії ))
Мізки досі киплять))
П.С. Дякую за такий наочний приклад з життя в кінці відео про БД, індекс. і пошук
Тримайтеся, легше не буде 😅
@@Bobocode 😅🤝😁
Ещё для полного счастья, нужно написать SimpleHashMap и желательно с имплементацией интерфейса Iterable. Я думаю, что методы разрешения коллизий только усложнят код, а вот динамическое изменение размера хэшь-таблици нужно реализовать. Спасибо за материал! Вот мой SimpleHashMap: github.com/ViktorJava/job4j_design/issues/28
Коллеги с job4j привет)
Я б не називав array простою структурою данних) Це дуже низькорівнева конструкція, властивості котрої обумовлені імплементацією мікросхем. По цій же причині є класичний Linked List, а Array List (Vector) використовує array як оптимізацію, і виграє у всіх сценаріях O-нотації, хоча в теорії так не мало б бути. Так само і з рекурсією.
Але для імплементації вправи це не потрібно знати)
Good point! Насправді не завжи легко знайти баланс між точністю і простотою 🙂
Наскільки я зрозумів, в кінці вставляються рандомні елементи в бінарне дерево. Там використовується бінарне дерево J яке надає Java (якщо вона взагалі надає), а не самописне з уроку? Бо в нашій реалізації ж немає балансування, і якщо перший рандомний елемент буде 1, то у нас буде типу, звичайний лінкедлист.
Дозвольте поясню. В кінці відео ми використовуємо те дерево, яке щойно написали (RecursiveBinarySearchTree). Так, в ньому немає балансування, але це не страшно, для конкретного прикладу. Звʼязний список може утворитися тільки якщо ми додаємо елементи в дерево по-порядку. Оскільки ми додаємо рандомні елементи, то дерево буде більш-менш збалансоване.
Привіт. На рахунок Time Complexity. Наскільки я знаю, System.getNano() та .currentMillies() це не найкращий спосіб вимірювання часу виконання. Чи міг би ти розглянути інші, точніші способи вимірювання часу? Наприклад, я недавно розглядав таку бібліотеку як JHM - Java MicrobenchHarnes, яка дозволяє проганяти методи N-нну кількість разів та отримувати різну часову статистику (середній час виконання методу, кількість операцій на секунду і т.д.). Чи ти з таким стикався? Було б цікаво послухати твою думку.
Привіт, можна розглянути, коли буде потреба. У цьому випадку мені зовсім не треба дуже точних вимірювань, відносного порівняння достатньо, щоб показати, що я маю на увазі.
Оце по сутi!
Ще би реалізували алгоритм видалення, ціни не було б
Я у вас вірю!