Треки
/
x86-64 Assembly
x86-64 Assembly
/
Вправи
/
Двійкове дерево пошуку
Двійкове дерево пошуку

Двійкове дерево пошуку

Середня

Вказівки

Вставляйте числа в бінарне дерево пошуку та шукайте їх у ньому.

Коли потрібно подати відсортовані дані, масив не дуже добре підходить на роль структури даних.

Уявімо, що в нас є масив [1, 3, 4, 5], і ми додаємо до нього 2, тож він стає [1, 3, 4, 5, 2]. Тепер нам доведеться знову сортувати весь масив! Можна зробити краще, якщо зрозуміти, що нам потрібно лише звільнити місце для нового елемента [1, nil, 3, 4, 5], а потім покласти цей елемент у звільнене місце. Але це все одно вимагає зсунути багато елементів на одну позицію.

Бінарні дерева пошуку, натомість, працюють із відсортованими даними значно ефективніше.

Бінарне дерево пошуку складається з низки зʼєднаних вузлів. Кожен вузол містить фрагмент даних (наприклад, число 3), змінну з назвою left і змінну з назвою right. Змінні left і right указують на nil або на інші вузли. Оскільки ці інші вузли, своєю чергою, мають під собою ще інші вузли, ми кажемо, що змінні left і right указують на піддерева. Усі дані в лівому піддереві менші або дорівнюють даним поточного вузла, а всі дані в правому піддереві більші за дані поточного вузла.

Наприклад, якби в нас був вузол із даними 4 і ми додали дані 2, наше дерево мало б такий вигляд:

Граф із кореневим вузлом 4 і єдиним дочірнім вузлом 2.

      4
     /
    2

Якби ми потім додали 6, воно мало б такий вигляд:

Граф із кореневим вузлом 4 і двома дочірніми вузлами 2 і 6.

      4
     / \
    2   6

Якби ми потім додали 3, воно мало б такий вигляд

Граф із кореневим вузлом 4, двома дочірніми вузлами 2 і 6 та вузлом третього рівня 3.

       4
     /   \
    2     6
     \
      3

А якби ми потім додали 1, 5 і 7, воно мало б такий вигляд

Граф із кореневим вузлом 4, двома дочірніми вузлами 2 і 6 та чотирма вузлами третього рівня 1, 3, 5 і 7.

          4
        /   \
       /     \
      2       6
     / \     / \
    1   3   5   7

Подяка

Зображення створив habere-et-dispertire, використавши PGF/TikZ Тілла Тантау.


Джерело

Josh Cheek
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
x86-64 Assembly Exercism

Час розпочати Двійкове дерево пошуку?

Зареєструйтеся на Exercism, щоб вивчати й опановувати x86-64 Assembly, а також 22 концепції130 вправ та справжнє наставництво від людей, і все це безкоштовно.