SlideServe
Menu
Préférences
© SlideServe · v2026

Traversals

bat avatar
18 diapositives · 451 Views · Aug 16, 2014

Traversals. A systematic method to visit all nodes in a tree Binary tree traversals: Pre-order: root, left, right In-order: left, root, right Post-order: left, right, root General graph traversals (searches) Depth-first search Breadth-first search. Inorder(tree t). if t = nil

Traversals - slide 1
01 / 18Traversals
1 / 17

Télécharger la présentation

Traversals
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Traversals • A systematic method to visit all nodes in a tree • Binary tree traversals: • Pre-order: root, left, right • In-order: left, root, right • Post-order: left, right, root • General graph traversals (searches) • Depth-first search • Breadth-first search

  2. Inorder(tree t) • if t = nil • return • inorder(t.left) • visit(t) // e.g., print it • inorder(t.right)

  3. 5 2 1 3 8 6 10 7 9 Inorder (Infix) 1 2 3 5 6 7 8 9 10 (a BST will always work well with in-order traversal)

  4. 5 2 1 3 8 6 10 7 9 Pre-order (Prefix) 5 2 1 3 8 6 7 10 9

  5. 5 2 1 3 8 6 10 7 9 Post-order (Postfix) 1 3 2 7 6 9 10 8 5

  6. + * 1 3 - 6 10 Post-order 1 3 * + 6 10 -

  7. Depth-first search (DFS)חיפוש לעומק)) • DFS: Search one subtree completely before other • Pre-order traversal is an example of a DFS: • Visit root, left subtree (all the way), visit right subtree • We can do it in other order: • Visit root, right subtree, left subtree

  8. 5 2 1 3 8 6 10 7 9 Depth-first search (DFS) DFS: visit all descendents before siblings 5 2 1 3 8 6 7 10 9

  9. DFS(tree t) • q  new stack • push(q, t) • while (not empty(q)) • curr  pop(q) • visit curr // e.g., print curr.datum • push(q, curr.left) • push(q, curr.right) This version for binary trees only!

  10. 5 2 1 3 8 6 10 7 9 Breadth-first search (BFS)(חיפוש לרוחב) BFS: visit all siblings before their descendents 5 2 8 1 3 6 10 7 9

  11. BFS(tree t) • q  new queue • enqueue(q, t) • while (not empty(q)) • curr  dequeue(q) • visit curr // e.g., print curr.datum • enqueue(q, curr.left) • enqueue(q, curr.right) This version for binary trees only!

  12. DFS(tree t) • q  new stack • push(q, t) • while (not empty(q)) • curr  pop(q) • visit curr // e.g., print curr.datum • push(q, curr.left) • push(q, curr.right) This version for binary trees only!

  13. DFS(tree t) Void Graph::dfs (Vertex v) {v.visted = true; for each w adjacent to v if (!w.visited) dfs(w); } This version for any type of trees (graph)

  14. Graphs vs. Trees • Graphs don’t have any root • Graphs can be directed or undirected • Trees only grow down (upside-down) • (Why do trees grow upside down for Computer scientists???) • Graphs can have cycles, trees can’t (why?)

  15. DFS Example on Graph sourcevertex

  16. AVL (Adelson, Velskii, Landis) • Balance the tree (not our targil) • The left and right branches of the tree can only differ by one level • Ensures log N depth (much better for searching) • Takes log N to add or delete

  17. 5 3 8 4 10 1 5 Not AVL Tree 3 4 1 AVL Tree

  18. AVL Trees • Trees often need to be “rotated” when deleting or inserting to keep AVL balance • Nice link on this process • Sample AVL code