data structures azhar maqsood school of electrical engineering and computer sciences (seecs-nust)...

Post on 18-Jan-2018

238 Views

Category:

Documents

7 Downloads

Preview:

Click to see full reader

DESCRIPTION

Depth First and Breadth First Traversal Depth-first traversals: using the top-down view of the tree structure. Traverse the root, the left subtree and the right subtree. Breadth-first or level-order traversal: visit nodes in order of increasing depth. For nodes of same depth visit in left-to-right order.

TRANSCRIPT

Data StructuresData Structures

Azhar MaqsoodAzhar MaqsoodSchool of Electrical Engineering and Computer Sciences School of Electrical Engineering and Computer Sciences

(SEECS-NUST)(SEECS-NUST)

Binary TreesBinary Trees

Visiting and Traversing a Node

• Many applications require that all of the nodes of a tree be “visited”.

• Visiting a node may mean printing contents, retrieving information, making a calculation, etc.

• Traverse: To visit all the nodes in a tree in a systematic fashion.• A traversal can pass through a node without visiting

it at that moment.

Depth First and Breadth First Traversal

• Depth-first traversals: using the top-down view of the tree structure. Traverse the root, the left subtree and the right subtree.

• Breadth-first or level-order traversal: visit nodes in order of increasing depth. For nodes of same depth visit in left-to-right order.

Traversal strategies

• Preorder traversal• Work at a node is performed before its children are

processed.

• Postorder traversal• Work at a node is performed after its children are

processed.

• Inorder traversal• For each node:

• First left child is processed, then the work at the node is performed, and then the right child is processed.

Tree Traversal Types

Preorder traversal

• In the preorder traversal, the root node is processed first, followed by the left subtree and then the right subtree.

PrePreorder = root node of each subtree order = root node of each subtree beforebefore the subsequent left and right the subsequent left and right subtrees.subtrees.

Preorder Traversal

Preorder Traversal

• Visit root before traversing subtrees.

F

A

B C

G

IH

D E

J K

Inorder Traversal

• In the inorder traversal, the left subtree is processed first, followed by the root node, and then the right subtree.

Inorder = root node in betweenthe left and right subtrees.

Inorder Traversal

Inorder Traversal

• In an inorder traversal a node is visited after its left subtree and before its right Subtree

• Application: draw a binary tree or Arithmetic expression printing

((2 × (a − 1)) + (3 × b))

Example of Binary Tree (inorder)

Inorder Traversal

• Visit root between left and right subtree.

A

B C

G

IH

D E

J K

F

• In the postorder traversal, the left subtree is processed first, followed by the right subtree, and then the root node.

Postorder = root node after the left and right subtrees.

Postorder traversalPostorder traversal

Postorder TraversalPostorder traversalPostorder traversal

• In a postorder traversal, a node is visited after its descendants

• Application: compute space used by files in a directory and its subdirectories

Postorder traversalPostorder traversal

• Visit root after traversing subtrees.

A

B C

G

IH

D E

J K

F

Postorder traversalPostorder traversal

Expression Trees

+

a

b c

×

× +

×

d e

f

g

+

Expression tree for ( a + b × c) + ((d ×e + f) × g)

There are three notations for a mathematical expression: 1) Infix notation : ( a + (b × c)) + (((d ×e) + f) × c)2) Postfix notation: a b c × + d e × f + g * +3) Prefix notation : + + a × b c × + × d e f g

Expression Tree traversals

• Depending on how we traverse the expression tree, we can produce one of these notations for the expression represented by the three.

• Inorder traversal produces infix notation.• This is a overly parenthesized notation. • Print out the operator, then print put the left subtree inside parentheses,

and then print out the right subtree inside parentheses. • Postorder traversal produces postfix notation.

• Print out the left subtree, then print out the right subtree, and then printout the operator.

• Preorder traversal produces prefix notation. • Print out the operator, then print out the right subtree, and then print

out the left subtree.

top related