„Двоично дърво за търсене (BST)“ е дървовидна структура от данни, в която всеки възел има най-много две деца, които се наричат ​​ляво дете и дясно дете, а най-горният възел в дървото се нарича корен. Освен това удовлетворява свойството за двоично търсене, което гласи, че ключът във всеки възел трябва да бъде по-голям или равен на който и да е ключ, съхраняван в лявото поддърво, и по-малък или равен на всеки ключ, съхраняван в дясното поддърво.

Двоичните дървета за търсене позволяват бързо търсене, добавяне и премахване на елементи. Те държат своите ключове в сортиран ред, така че търсенето и другите операции да могат да използват принципа на двоичното търсене: когато търсят ключ в дърво (или място за вмъкване на нов ключ), те обикалят дървото от корен до лист , правейки сравнения с ключове, съхранени във възлите на дървото и решавайки, въз основа на сравнението, да продължи търсенето в левите или десните поддървета. Средно това означава, че всяко сравнение позволява на операциите да пропуснат около половината от дървото, така че всяко търсене, вмъкване или изтриване отнема време, пропорционално на логаритъма на броя елементи, съхранени в дървото. Това е много по-добро от линейното време, необходимо за намиране на елементи по ключ в (несортиран) масив, но по-бавно от съответните операции върху хеш таблици.

В тази публикация сме изброили често задавани въпроси за интервю в Binary Search Tree:

  1. Вмъкване в BST
  2. Търсене на даден ключ в BST
  3. Изтриване от BST (двоично дърво за търсене)
  4. „Изграждане на балансиран BST от дадените ключове“
  5. Определете дали дадено двоично дърво е BST или не
  6. Проверете дали дадените ключове представляват едни и същи BST или не без изграждане на BST
  7. Намерете предшественик по ред за даден ключ в BST
  8. Намерете най-ниския общ предшественик (LCA) на два възела в BST
  9. „Намерете k’-тия най-малък и k’-тия най-голям елемент в BST”
  10. Намерете пода и тавана в двоично дърво за търсене
  11. Преобразуване на двоично дърво в BST чрез запазване на оригиналната му структура
  12. Премахване на възли от BST, които имат ключове извън валиден диапазон
  13. Намерете чифт с дадена сума в BST
  14. Намерете k’-тия най-малък възел в двоично дърво за търсене (BST)
  15. Намерете наследник по ред за даден ключ в BST
  16. Замени всеки елемент от масива с най-малкия по-голям елемент отдясно
  17. Коригиране на двоично дърво, което е само на една размяна от превръщането в BST
  18. Актуализиране на всеки ключ в BST, за да съдържа сумата от всички по-големи ключове
  19. Проверете дали дадена последователност представлява обхождането на предварителната поръчка на BST
  20. „Изграждане на двоично дърво за търсене от последователност след поръчка“
  21. „Изграждане на двоично дърво за търсене от последователност от предварителна поръчка“
  22. Преброяване на поддървета в BST, чиито възли се намират в даден диапазон
  23. Намерете размера на най-големия BST в двоично дърво
  24. Отпечатайте пълно дърво за двоично търсене (BST) във възходящ ред
  25. Отпечатайте двоична дървовидна структура със съдържанието й в C++
  26. „Намерете оптималната цена за изграждане на двоично дърво за търсене“
  27. „Структура на данните за Treap“
  28. Внедряване на структура на данни на Treap (вмъкване, търсене и изтриване)
  29. Обединяване на два BST в двойно свързан списък в сортиран ред
  30. „Изграждане на BST с балансиран по височина от небалансиран BST“
  31. „Изграждане на BST с балансирана височина от сортиран двойно свързан списък“
  32. Намерете триплет с дадената сума в BST
  33. Преобразуване на двоично дърво за търсене в Min Heap

Благодаря, че прочетохте.