Data Structures Azhar Maqsood School of Electrical Engineering and Computer Sciences (SEECS-NUST)...
-
Upload
august-smith -
Category
Documents
-
view
243 -
download
7
description
Transcript of Data Structures Azhar Maqsood School of Electrical Engineering and Computer Sciences (SEECS-NUST)...
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.