Professional Documents
Culture Documents
What Is A Tree: Computers"R"Us
What Is A Tree: Computers"R"Us
In computer science, a ComputersRUs tree is an abstract model of a hierarchical structure Sales Manufacturing R&D A tree consists of nodes with a parent-child relation US International Laptops Desktops Applications:
Bank Robbery
Stock Fraud
Ponzi Scheme
Asia
Canada
Trees
Trees
Tree Terminology
Root: 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 ancestors E Height of a tree: maximum depth of any node (3) Descendant of a node: child, I grandchild, grand-grandchild, etc.
2004 Goodrich, Tamassia Trees
Query methods:
boolean isInternal(p) boolean isExternal(p) boolean isRoot(p)
Update method:
object replace (p, o)
Accessor methods:
F G H
subtree
J K
Additional update methods may be defined by data structures implementing the Tree ADT
Trees
Preorder Traversal
A traversal visits the nodes of a tree in a systematic manner In a preorder traversal, a node is visited before its descendants Application: print a structured document 1 2
1. Motivations
Postorder Traversal
Algorithm preOrder(v) visit(v) for each child w of v preorder (w)
In a postorder traversal, a node is visited after its descendants Application: compute space used by files in a directory and its subdirectories 9 3
homeworks/
cs16/
5
2. Methods
9
References
7
programs/
8
todo.txt 1K
3
1.1 Greed
4
1.2 Avidity
6
2.1 Stock Fraud
Trees
7
2.2 Ponzi Scheme
8
2.3 Bank Robbery
5
1
h1c.doc 3K
2004 Goodrich, Tamassia
2
h1nc.doc 2K
4
DDR.java 10K
Trees
5
Stocks.java 25K
6
Robot.java 20K
6
We call the children of an internal node left child and right child Alternative recursive definition: a binary tree is either
Each internal node has at most two children (exactly two for proper binary trees) The children of a node are an ordered pair
B
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
a 1
Trees 8
H
2004 Goodrich, Tamassia Trees
I
7 2004 Goodrich, Tamassia
Decision Tree
Binary tree associated with a decision process
internal nodes: questions with yes/no answer external nodes: decisions
On expense account?
Yes No
Starbucks
2004 Goodrich, Tamassia
Spikes
Trees
Al Forno
Caf Paragon
9 2004 Goodrich, Tamassia Trees 10
Inorder Traversal
In an inorder traversal a node is visited after its left subtree and before its right subtree Application: draw a binary tree
x(v) = inorder rank of v y(v) = depth of v 6
Update methods may be defined by data structures implementing the BinaryTree ADT
Algorithm inOrder(v) if hasLeft (v) inOrder (left (v)) visit(v) if hasRight (v) inOrder (right (v))
8
2 1 3 4 5
Trees
12
+ 2 a 1 3 b
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))
Trees 13
+ 2 5
2004 Goodrich, Tamassia
Algorithm evalExpr(v) if isExternal (v) return v.element () else x evalExpr(leftChild (v)) y evalExpr(rightChild (v)) operator stored at v return x y
1
Trees 14
5 1
Trees 15
Specializations of EulerTour
We show how to specialize class EulerTour to evaluate an arithmetic expression Assumptions
External nodes store Integer objects Internal nodes store Operator objects supporting method operation (Integer, Integer) }
2004 Goodrich, Tamassia Trees 17
public class EvaluateExpression extends 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 ); }
A D F
B A C
2004 Goodrich, Tamassia
D E
F
C
Trees
E
18
B A D C
Trees
2
B D
B A C
2004 Goodrich, Tamassia
D E
4 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
2004 Goodrich, Tamassia Trees
5
E F
6
C J
10
G H
11
20