© 2004 Goodrich, Tamassia Trees1 Lecture 04 Trees Topics Trees Binary Trees Binary Search trees.
-
date post
21-Dec-2015 -
Category
Documents
-
view
237 -
download
2
Transcript of © 2004 Goodrich, Tamassia Trees1 Lecture 04 Trees Topics Trees Binary Trees Binary Search trees.
Trees 2© 2004 Goodrich, Tamassia
TreesIn computer science, a tree is an abstract model of a hierarchical structureA tree consists of nodes with a parent-child relationApplications:
Organization charts File systems Programming
environments
Computers”R”Us
Sales R&DManufacturing
Laptops DesktopsUS International
Europe Asia Canada
Trees 3© 2004 Goodrich, Tamassia subtree
TreesTerminologyRoot: node without parent (A)Internal node: node with at least one child (A, B, C, F)External node (a.k.a. leaf ): node without children (E, I, J, K, G, H, D)Ancestors of a node: parent, grandparent, grand-grandparent, etc.Depth of a node: number of ancestorsHeight of a tree: maximum depth of any node (3)Descendant of a node: child, grandchild, grand-grandchild, etc.
A
B DC
G HE F
I J K
Subtree: tree consisting of a node and its descendants
Trees 4© 2004 Goodrich, Tamassia
TreesA node is represented by an object storing
Element Parent node Sequence of children
nodes
Node objects implement the Position ADT
B
DA
C E
F
B
A D F
C
E
Trees 5© 2004 Goodrich, Tamassia
TreesOperations:We use positions to abstract nodesGeneric methods:
integer size() boolean isEmpty() Iterator elements() Iterator positions()
Accessor methods: position root() position parent(p) positionIterator
children(p)
Query methods: boolean isInternal(p) boolean isExternal(p) boolean isRoot(p)
Update method: object replace (p, o)
Additional update methods may be defined by data structures implementing the Tree ADT
Trees 6© 2004 Goodrich, Tamassia
TreesA traversal visits the nodes of a tree in a systematic mannerIn a preorder traversal, a node is visited before its descendants Application: print a structured document
Make Money Fast!
1. Motivations References2. Methods
2.1 StockFraud
2.2 PonziScheme
1.1 Greed 1.2 Avidity2.3 BankRobbery
1
2
3
5
4 6 7 8
9
Algorithm preOrder(v)visit(v)for each child w of v
preorder (w)
Trees 7© 2004 Goodrich, Tamassia
TreesIn a postorder traversal, a node is visited after its descendantsApplication: compute space used by files in a directory and its subdirectories
Algorithm postOrder(v)for each child w of v
postOrder (w)visit(v)
cs16/
homeworks/todo.txt
1Kprograms/
DDR.java10K
Stocks.java25K
h1c.doc3K
h1nc.doc2K
Robot.java20K
9
3
1
7
2 4 5 6
8
Trees 8© 2004 Goodrich, Tamassia
Binary TreesA binary tree is a tree with the following properties:
Each internal node has at most two children (exactly two for proper binary trees)
The children of a node are an ordered pair
We call the children of an internal node left child and right childAlternative recursive definition: a binary tree is either
a tree consisting of a single node, or
a tree whose root has an ordered pair of children, each of which is a binary tree
Applications: arithmetic
expressions decision processes searching
A
B C
F GD E
H I
Trees 9© 2004 Goodrich, Tamassia
Binary TreesA node is represented by an object storing
Element Parent node Left child node Right child node
Node objects implement the Position ADT
B
DA
C E
B
A D
C E
Trees 10© 2004 Goodrich, Tamassia
Binary Treesnodes are stored in an array
…
let rank(node) be defined as follows: rank(root) = 1 if node is the left child of parent(node),
rank(node) = 2*rank(parent(node))
if node is the right child of parent(node), rank(node) =
2*rank(parent(node))+1
1
2 3
6 74 5
10 11
A
HG
FE
D
C
B
J
Trees 11© 2004 Goodrich, Tamassia
Binary TreesArithmetic Expression Tree: Binary tree associated with an arithmetic expression
internal nodes: operators external nodes: operands
Example: arithmetic expression tree for the expression (2 (a 1) (3 b))
2
a 1
3 b
Trees 12© 2004 Goodrich, Tamassia
Binary TreesDecision Tree: Binary tree associated with a decision process
internal nodes: questions with yes/no answer external nodes: decisions
Example: dining decision
Want a fast meal?
How about coffee? On expense account?
Starbucks Spike’s Al Forno Café Paragon
Yes No
Yes No Yes No
Trees 13© 2004 Goodrich, Tamassia
Binary TreesNotationn number of nodese number of
external nodesi number of
internal nodesh height
Properties: e i 1 n 2e 1 h i h (n 1)2 e 2h
h log2 e
h log2 (n 1) 1
Trees 14© 2004 Goodrich, Tamassia
Binary Trees
The BinaryTree ADT extends the Tree ADT, i.e., it inherits all the methods of the Tree ADT (e.g., postOrder/ preOrder traversals)Additional methods:
position left(p) position right(p) boolean hasLeft(p) boolean hasRight(p)
Update methods may be defined by data structures implementing the BinaryTree ADT
Trees 15© 2004 Goodrich, Tamassia
Binary TreesIn an inorder traversal a node is visited after its left subtree and before its right subtree
Algorithm inOrder(v)if hasLeft (v)
inOrder (left (v))visit(v)if hasRight (v)
inOrder (right (v))
3
1
2
5
6
7 9
8
4
Trees 16© 2004 Goodrich, Tamassia
Binary TreesPrint Arithmetic Expressions: Application and specialization of an inorder traversal
print operand or operator when visiting node
print “(“ before traversing left subtree
print “)“ after traversing right subtree
Algorithm printExpression(v)if hasLeft (v)
print(“(’’)inOrder (left(v))
print(v.element ())if hasRight (v)
inOrder (right(v))print (“)’’)
2
a 1
3 b((2 (a 1)) (3 b))
Trees 17© 2004 Goodrich, Tamassia
Binary TreesEvaluate Arithmetic Expressions: Specialization of a postorder traversal
recursive method returning the value of a subtree
when visiting an internal node, combine the values of the subtrees
Algorithm evalExpr(v)if isExternal (v)
return v.element ()else
x evalExpr(leftChild (v))
y evalExpr(rightChild (v))
v. operatorElement ()
return x y
2
5 1
3 2
Trees 18© 2004 Goodrich, Tamassia
Binary TreesEuler Tour Traversal: Generic traversal of a binary treeIncludes a special cases the preorder, postorder and inorder traversalsWalk around the tree and visit each node three times:
on the left (preorder) from below (inorder) on the right (postorder)
2
5 1
3 2
LB
R
Trees 19© 2004 Goodrich, Tamassia
Binary TreesGeneric algorithm that can be specialized by redefining certain stepsImplemented by means of an abstract Java class Visit methods that can be redefined by subclassesTemplate method eulerTour
Recursively called on the left and right children
A Result object with fields leftResult, rightResult and finalResult keeps track of the output of the recursive calls to eulerTour
public abstract class EulerTour {protected BinaryTree tree;protected void visitExternal(Position p, Result r) { }protected void visitLeft(Position p, Result r) { }protected void visitBelow(Position p, Result r) { }
protected void visitRight(Position p, Result r) { } protected Object eulerTour(Position p) {
Result r = new Result();if tree.isExternal(p) { visitExternal(p, r); }
else {visitLeft(p, r);r.leftResult = eulerTour(tree.left(p));visitBelow(p, r);r.rightResult = eulerTour(tree.right(p));visitRight(p, r);return r.finalResult;
} …
Trees 20© 2004 Goodrich, Tamassia
Binary TreesWe show how to specialize class EulerTour to evaluate an arithmetic expressionAssumptions
External nodes store Integer objects
Internal nodes store Operator objects supporting methodoperation (Integer, Integer)
public class EvaluateExpressionextends EulerTour {
protected void visitExternal(Position p, Result r) {r.finalResult = (Integer) p.element();
}
protected void visitRight(Position p, Result r) {Operator op = (Operator) p.element();r.finalResult = op.operation(
(Integer) r.leftResult,(Integer) r.rightResult);
}
…
}
Trees 21© 2004 Goodrich, Tamassia
Binary Search TreesA binary search tree is a binary tree storing keys (or key-value entries) at its internal nodes and satisfying the following property:
Let u, v, and w be three nodes such that u is in the left subtree of v and w is in the right subtree of v. We have key(u) key(v) key(w)
External nodes do not store items
An inorder traversal of a binary search trees visits the keys in increasing order
6
92
41 8
Trees 22© 2004 Goodrich, Tamassia
Binary Search TreesTo search for a key k, we trace a downward path starting at the rootThe next node visited depends on the outcome of the comparison of k with the key of the current nodeIf we reach a leaf, the key is not found and we return nukkExample: find(4):
Call TreeSearch(4,root)
Algorithm TreeSearch(k, v)if T.isExternal (v)
return vif k key(v)
return TreeSearch(k, T.left(v))else if k key(v)
return velse { k key(v) }
return TreeSearch(k, T.right(v))
6
92
41 8
Trees 23© 2004 Goodrich, Tamassia
Binary Search Trees - Insertion
To perform operation inser(k, o), we search for key k (using TreeSearch)Assume k is not already in the tree, and let let w be the leaf reached by the searchWe insert k at node w and expand w into an internal nodeExample: insert 5
6
92
41 8
6
92
41 8
5
w
w
Trees 24© 2004 Goodrich, Tamassia
Binary Search Trees - Deletion
To perform operation remove(k), we search for key kAssume key k is in the tree, and let let v be the node storing kIf node v has a leaf child w, we remove v and w from the tree with operation removeExternal(w), which removes w and its parentExample: remove 4
6
92
41 8
5
vw
6
92
51 8
Trees 25© 2004 Goodrich, Tamassia
Binary Search Trees - Deletion (cont.)
We consider the case where the key k to be removed is stored at a node v whose children are both internal
we find the internal node w that follows v in an inorder traversal
we copy key(w) into node v we remove node w and its
left child z (which must be a leaf) by means of operation removeExternal(z)
Example: remove 3
3
1
8
6 9
5
v
w
z
2
5
1
8
6 9
v
2