Download presentation

Presentation is loading. Please wait.

Published byGregory McBride Modified over 2 years ago

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) 1. if t = nil 2. return 3. inorder(t.left) 4. visit(t) // e.g., print it 5. inorder(t.right)

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

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

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

6
Post-order 1 3 * + 6 10 - +*13-610

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
Depth-first search (DFS) DFS: visit all descendents before siblings 5213861079 5 2 1 3 8 6 7 10 9

9
DFS(tree t) 1. q new stack 2. push(q, t) 3. while (not empty(q)) 4. curr pop(q) 5. visit curr // e.g., print curr.datum 6. push(q, curr.left) 7. push(q, curr.right) This version for binary trees only!

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

11
BFS(tree t) 1. q new queue 2. enqueue(q, t) 3. while (not empty(q)) 4. curr dequeue(q) 5. visit curr // e.g., print curr.datum 6. enqueue(q, curr.left) 7. enqueue(q, curr.right) This version for binary trees only!

12
DFS(tree t) 1. q new stack 2. push(q, t) 3. while (not empty(q)) 4. curr pop(q) 5. visit curr // e.g., print curr.datum 6. push(q, curr.left) 7. 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 source vertex

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 38 1 410 5 3 1 4 AVL Tree Not AVL Tree

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

Similar presentations

OK

2014-T2 Lecture 24 School of Engineering and Computer Science, Victoria University of Wellington Marcus Frean, Lindsay Groves, Peter Andreae, and Thomas.

2014-T2 Lecture 24 School of Engineering and Computer Science, Victoria University of Wellington Marcus Frean, Lindsay Groves, Peter Andreae, and Thomas.

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google

Ppt on united nations agencies Ppt on time management presentation Marketing ppt on product Ppt on railway tracks Ppt on determinants of economic development Ppt on world book day 2017 Ppt on poem the road not taken Ppt on chapter human eye and the colourful world Ppt on holographic technology in education Ppt on amplitude shift keying modem