Чим відрізняється глибина дерева від висоти?


262

Це просте запитання з теорії алгоритмів.
Різниця між ними полягає в тому, що в одному випадку ви рахуєте кількість вузлів, а в іншому кількість ребер на найкоротшому шляху між кореневим та конкретним вузлом.
Що це таке?


78
Порада: щоб уникнути плутанини між термінологіями: 1. Зріст: Уявіть собі, що вимірює зріст людини, ми робимо це від ніг до голови (лист до кореня). 2. Глибина: Уявіть собі, вимірюючи глибину моря, ми робимо це від земної поверхні до океанського русла (від кореня до листка).
— Yesh

@Yesh Це чудова аналогія.
— Спеціальний персонаж

1
Щоб додати до @Yesh відмінні аналогії: для деякого внутрішнього вузла посеред дерева глибина полягає в тому, скільки рівнів він знаходиться під кореневим вузлом, а висота - це рівень, який знаходиться над його найнижчим дочірнім вузлом.
— Томас Нгуен

Відповіді:


664

Я дізнався, що глибина та висота є властивостями вузла :

  • Глибина вузла є числом ребер від вузла до кореневого вузла дерева.
    Кореневий вузол матиме глибину 0.

  • Висота вузла є число ребер на довгому шляху від вузла до листу.
    Листовий вузол матиме висоту 0.

Властивості дерева :

  • Висота дерева буде висота його кореневого вузла,
    або , що еквівалентна, глибина найглибшого вузла.

  • Діаметр (або ширина ) дерева є кількістю вузлів на самому довгому шляху між будь-якими двома вузлами листя. Дерево внизу має діаметр 6 вузлів.

Дерево, з висотою та глибиною кожного вузла


21
+1 збирався додати цитату з тим самим вмістом звідси: en.wikipedia.org/wiki/Tree_%28data_structure%29
— Péter Török

2
це означає, що висота == максимальна глибина
— roottraveller

6
@rkm_Hodor: Так, висота дерева завжди дорівнює глибині найглибшого вузла.
— Daniel AA Pelsmaeker

1
Чи можете ви надати джерело вашої заяви, що діаметр дерева вважає вузли замість ребер? Це суперечить звичайному визначенню діаметра графіка (див., Наприклад, en.wikipedia.org/wiki/Distance_(graph_theory) ), яке запитує найдовший шлях.
— j_random_hacker

1
@j_random_hacker Це питання визначення, виберіть найкорисніший для вас. Щоб дістати від кількості вершин до кількості ребер, просто відніміть 1. Я вважаю за краще порахувати кількість вершин, оскільки в результаті виходить графік, який має лише один вузол шириною 1, і порожній графік шириною 0. mathworld. wolfram.com/GraphDiameter.html
— Daniel AA Pelsmaeker

44

висота і глибина дерева дорівнює ...

але висота і глибина вузла не дорівнює, тому що ...

висота обчислюється шляхом переходу від даного вузла до найглибшого можливого аркуша.

глибина обчислюється від обходу від кореня до заданого вузла .....


4
"висота обчислюється шляхом переходу від аркуша до даного вузла", це невірно, лист повинен бути самим глибоким серед усіх листків даного вузла.
— mightyWOZ

14

За даними Cormen et al. Вступ до алгоритмів (додаток В.5.3), глибина вузла X у дереві Т визначається як довжина простого шляху (кількість ребер) від кореневого вузла від T до X. Висота вузла Y дорівнює кількість ребер на найдовшій низхідній простій стежці від Y до листка. Висота дерева визначається як висота його кореневого вузла.

Зауважте, що простий шлях - це шлях без повторних вершин.

Висота дерева дорівнює максимальній глибині дерева . Глибина вузла та висота вузла необов'язково рівні. Дивіться малюнок B.6 3-го видання Cormen et al. для ілюстрації цих понять.

У мене іноді виникають проблеми із проханням рахувати вузли (вершини) замість ребер, тому попросіть роз'яснити, якщо ви не впевнені, що слід рахувати вузли чи ребра під час іспиту чи співбесіди.


Чи є різниця в підрахунку вузлів і ребер. Здається, що обидва дадуть однаковий результат. Виправте мене, якщо я помиляюся.
— VINOTH ENERGETIC

@jdhao, як може бути глибина кореня 2? Це або 0 (якщо вважаються ребра), так і 1 (якщо вважаються вузли).
— neowulf33

@ neowulf33, так, я страшенно помиляюся. Глибина кореневого вузла повинна бути 0. Я видалю свій коментар, щоб не плутати людей.
— jdhao

2

Проста відповідь:
Глибина:
1. Дерево : Кількість країв / дуги від кореневого вузла до листового вузла дерева називається Глибиною дерева.
2. Вузол : Кількість ребер / дуги від кореневого вузла до цього вузла називається Глибиною цього вузла.


2

Ще один спосіб зрозуміти це поняття: Глибина: Накресліть горизонтальну лінію в кореневому положенні та розгляньте цю лінію як основну. Тож глибина кореня дорівнює 0, і всі його діти ростуть вниз, тому кожен рівень вузлів має поточну глибину + 1.

Висота: Одна і та ж горизонтальна лінія, але цього разу положення землі - це зовнішні вузли, які є листям дерева і рахуються вгору.


2

Я хотів зайняти цю посаду, оскільки я студент з нижчим рівнем навчання, і все більше ми використовуємо OpenDSA та інші підручники з відкритим кодом. Здається, що з найвищого рейтингу відповідь, що спосіб навчання висоті та глибині змінився від покоління до наступного, і я публікую це, щоб усі усвідомлювали, що ця розбіжність зараз існує і, сподіваємось, не спричинить помилок у будь-якому програми! Дякую.

З структур даних OpenDSA та книги Algos :

Якщо n 1 , n 2 , ..., n k - послідовність вузлів у дереві, така що n i є батьком n i +1 для 1 <= i <k, то ця послідовність називається шлях від n 1 до n k . Довжина шляху становить k − 1. Якщо є шлях від вузла R до вузла M, то R є родоначальником M, а M - нащадком R. Таким чином, усі вузли на дереві є нащадками кореня дерева, тоді як корінь - предком всіх вузлів. Глибина вузла М на дереві - це довжина шляху від кореня дерева до М. Висота дерева на одну більшу, ніж глибина найглибшого вузла на дереві.Усі вузли глибини d знаходяться на рівні d на дереві. Корінь - єдиний вузол на рівні 0, а його глибина - 0.

Малюнок 7.2.1

Малюнок 7.2.1: Двійкове дерево. Вузол А - корінь. Вузли В і С - діти А. Вузли B і D разом утворюють піддірева. У вузлі В є двоє дітей: його ліва дитина - порожнє дерево, а права дитина - D. Вузли A, C і E - предки G. Вузли D, E і F складають рівень 2 дерева; вузол A знаходиться на рівні 0. Краї від A до C до E до G утворюють шлях довжиною 3. Вузли D, G, H і I - це листя. Вузли A, B, C, E і F - це внутрішні вузли. Глибина I - 3. Висота цього дерева - 4.


Для чого це значення, визначення за цим посиланням було змінено на: "Глибина вузла M на дереві - це довжина шляху від кореня дерева до M. Висота дерева - це глибина найглибший вузол на дереві ».
— kaya3
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.