Чи обхід попереднього замовлення такий самий, як Перший пошук за глибиною?


13

Мені здається, що обхід попереднього замовлення та DFS однакові, як в обох випадках ми проходимо від кореня до лівої гілки та назад до кореня, а потім до правої гілки рекурсивно. Чи міг би виправити мене, якщо я помиляюся?

Спасибі заздалегідь!

Відповіді:


10

попереднє обхід - це обхід, він відвідує кожен вузол бінарного дерева

Перший глибинний пошук - це пошук, він обходить довільний графік, який шукає певний вузол (що він найкраще працює в нециклічному графіку (ака-дерево) не має значення)

одне це лише велика різниця, щоб назвати їх іменами різниць


1
+1, але я хочу додати, що траверси до і після замовлення - це лише окремі випадки більш загальної стратегії DFS.
Френк

1
Чи не попереднє замовлення обходу просто означає обробку вузлів перед їхніми дітьми? Звідки йдеться про те, що вузли утворюють двійкове дерево чи навіть дерево?
Кіліан Фот

@KilianFoth Я б очікував, що під впливом вузла, що має дітей (на відміну від сусідів), буде на увазі структура дерева, оскільки це передбачає ієрархію вузлів. Верх ієрархії - корінь дерева. Але я можу уявити собі обхід попереднього замовлення та проходження після замовлення, що має сенс на будь-якому дереві, навіть у тих, які не є двійковими.
YoungJohn

1

Так, але це має бути навпаки: DFSсхоже на PreOrder.
Термін PreOrderбільше стосується двійкових дерев і парсерів.
Він використовується для порівняння з іншими обхідними замовленнями бінарного дерева: InOrder, PostOrderі PreOrder.
Топологічний сортування схожий на обхід поштового замовлення (натисніть вузол у стек після відвідування всіх сусідніх вузлів).


Мої думки схожі на цю відповідь. Більш конкретно, попереднє замовлення - це конкретна реалізація батьківської категорії DFS. Попереднє замовлення обходу дітей жорстко ліворуч, а потім праворуч; тоді як для загального (батьківського) DFS порядок обходу дітей не визначений і може бути будь-яким порядком.
Джерред С.

-1

Для обходу бінарного дерева в Попередньому порядку проводяться наступні операції

  1. Відвідайте корінь
  2. Обведіть ліве піддерево
  3. Обведіть праве піддерево

Тобто на зображенні нижче попередній обхід попереднього замовлення склав би 1,2,3,6,4,5,7,8,9,10,11,12

У цьому ж зображенні 1,2,3,4,5,6,7,8,9,10,11,12 було б для DFS

Джерело DFS: http://datastructuresnotes.blogspot.in/2009/02/binary-tree-traversal-preorder-inorder.html

Джерело попереднього замовлення: Wiki

ДФС


9
Це не бінарне дерево. Це дерево, але не двійкове.
Маной Р

Що відбувається, коли "6" має підвузли?
Мар'ян Венема

Ви запитуєте DFS або попереднє замовлення?
Zedaiq

@ManojR Отримав це з джерела, згаданого вище.
Zedaiq

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