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


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.