Що таке блискавка і як вона стосується деревоподібної структури?


15

Я читав главу в ЛЯХ, яка насправді не мала для мене сенсу. Я розумію, що блискавки можуть довільно перетинати деревоподібну структуру, але мені потрібно трохи уточнити це. Також чи можна узагальнювати блискавки до будь-якої структури даних?


3
Це, мабуть, більше підходить для інформатики , хоча робота з узагальненням блискавок передбачає досить технічну техніку.
Дейв Кларк

6
Застібка-блискавка - це те, що завжди слід тримати закритим, особливо при обході дерева.
Андрій Бауер

Відповіді:


14

Застібкою-блискавкою, загалом, є структура даних із отвором у ній. Блискавки використовуються для обходу / маніпулювання структурами даних, а отвір відповідає поточному фокусу обходу. Зазвичай є також елемент розглянутої структури даних, так що в них є (список) блискавка та список або (дерево) блискавка та дерево. Блискавка дозволяє програмісту ефективно пересуватися по структурі даних, навіть замінюючи елемент у фокусі. Пара блискавки і елемент у фокусі задовольняють тим обмеженням, що розміщення елемента у фокусі в отворі надає оригінальну структуру даних.

Блискавки можуть бути узагальнені до довільних індуктивних типів даних. Поняття можна визначити індексованим типом (Див. Типи даних, що індексуються типами ). Вони також пов'язані з ідеєю похідної структури даних , і вона вивчалася з точки зору теоретичної категорії .


2

Зазвичай блискавка - це пара речей: це структура з отвором, фокус , який представляє, де ви знаходитесь в структурі, разом із контуром , записуючи, як ви дійшли до цього фокусу. (Ця стежка - хлібний хліб ЛЯХ.)

Шлях полягає в тому, як ви насправді застосовуєте зміни до структури: "йдіть вниз, ідіть вліво, збільшуйте значення". Неодноразово застосовуючи в цій точці "йти вгору" ( go_upу статті Гюєта ), ви можете повторити свої кроки і закінчити нову мутовану копію оригінальної структури.

Вони справді можуть бути узагальнені до інших структур:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.