0% found this document useful (0 votes)
24 views

Outline and Reading: 6/8/2002 2:15 PM Trees 1 6/8/2002 2:15 PM Trees 2

The document discusses various tree data structures and algorithms, including: 1) Definitions of tree terminology like root, internal node, leaf node, ancestors, descendants, subtree, and tree height. 2) An overview of the tree abstract data type (ADT) including common methods like size, isEmpty, and traversing nodes. 3) Specific tree traversal algorithms like preorder, postorder, and inorder traversals and their applications. 4) Details of binary trees including their properties, the binary tree ADT, and applications like representing arithmetic expressions and decision trees.

Uploaded by

Murali Muthusamy
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views

Outline and Reading: 6/8/2002 2:15 PM Trees 1 6/8/2002 2:15 PM Trees 2

The document discusses various tree data structures and algorithms, including: 1) Definitions of tree terminology like root, internal node, leaf node, ancestors, descendants, subtree, and tree height. 2) An overview of the tree abstract data type (ADT) including common methods like size, isEmpty, and traversing nodes. 3) Specific tree traversal algorithms like preorder, postorder, and inorder traversals and their applications. 4) Details of binary trees including their properties, the binary tree ADT, and applications like representing arithmetic expressions and decision trees.

Uploaded by

Murali Muthusamy
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

Outline and Reading Trees

Make Money Fast!

Stock Fraud

Ponzi Scheme

Bank Robbery

Tree ADT (2.3.1) Preorder and postorder traversals (2.3.2) BinaryTree ADT (2.3.3) Inorder traversal (2.3.3) Euler Tour traversal (2.3.3) Template method pattern Data structures for trees (2.3.4) Java implementation (http://jdsl.org)
1 6/8/2002 2:15 PM Trees 2

6/8/2002 2:15 PM

Trees

What is a Tree
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:
Organization charts File systems Europe Programming environments
Asia Canada

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.
6/8/2002 2:15 PM Trees

Subtree: tree consisting of a node and its descendants


A

subtree
J K

6/8/2002 2:15 PM

Trees

Tree ADT
We use positions to abstract nodes Generic methods:
integer size() boolean isEmpty() objectIterator elements() positionIterator positions()

Preorder Traversal
Query methods:
boolean isInternal(p) boolean isExternal(p) boolean isRoot(p)

Update methods:
swapElements(p, q) object replaceElement(p, o)

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

Algorithm preOrder(v) visit(v) for each child w of v preorder (w)

Accessor methods:
position root() position parent(p) positionIterator children(p)

Additional update methods may be defined by data structures implementing the Tree ADT 3

Make Money Fast!

5
2. Methods

9
References

4
1.2 Avidity

6
2.1 Stock Fraud
Trees

7
2.2 Ponzi Scheme

8
2.3 Bank Robbery
6

1.1 Greed
6/8/2002 2:15 PM Trees 5 6/8/2002 2:15 PM

Postorder Traversal
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/

Binary Tree
A binary tree is a tree with the following properties:
Each internal node has two children The children of a node are an ordered pair

Algorithm postOrder(v) for each child w of v postOrder (w) visit(v)

Applications:
arithmetic expressions decision processes searching
A

cs16/

7
programs/

8
todo.txt 1K

We call the children of an internal node left child and right child Alternative 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
6/8/2002 2:15 PM Trees

1
h1c.doc 3K
6/8/2002 2:15 PM

2
h1nc.doc 2K

4
DDR.java 10K
Trees

5
Stocks.java 25K

6
Robot.java 20K
7

I
8

Arithmetic Expression Tree


Binary tree associated with an arithmetic expression
internal nodes: operators external nodes: operands

Decision Tree
Binary tree associated with a decision process
internal nodes: questions with yes/no answer external nodes: decisions

Example: arithmetic expression tree for the expression (2 (a 1) + (3 b)) + 2 a


6/8/2002 2:15 PM

Example: dining decision Want a fast meal?

1
Trees 9

Yes

No

How about coffee?


Yes No

On expense account?
Yes No

Starbucks
6/8/2002 2:15 PM

Spikes
Trees

Al Forno

Caf Paragon
10

Properties of Binary Trees


Notation
n number of nodes e number of external nodes i number of internal nodes h height

BinaryTree ADT
The BinaryTree ADT extends the Tree ADT, i.e., it inherits all the methods of the Tree ADT Additional methods:
position leftChild(p) position rightChild(p) position sibling(p)
6/8/2002 2:15 PM Trees 12

Properties: e=i+1 n = 2e 1 hi h (n 1)/2 e 2h h log2 e h log2 (n + 1) 1

Update methods may be defined by data structures implementing the BinaryTree ADT

6/8/2002 2:15 PM

Trees

11

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

Print Arithmetic Expressions


Specialization of an inorder traversal
print operand or operator when visiting node print ( before traversing left subtree print ) after traversing right subtree

Algorithm inOrder(v) if isInternal (v) inOrder (leftChild (v)) visit(v) if isInternal (v) inOrder (rightChild (v))
8

+ a 1 3 b

2 1 3
6/8/2002 2:15 PM

Algorithm printExpression(v) if isInternal (v) print(() inOrder (leftChild (v)) print(v.element ()) if isInternal (v) inOrder (rightChild (v)) print ()) ((2 (a 1)) + (3 b))
Trees 14

4 5

Trees

13

6/8/2002 2:15 PM

Evaluate 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

Euler Tour Traversal


Generic traversal of a binary tree Includes a special cases the preorder, postorder and inorder traversals Walk around the tree and visit each node three times: on the left (preorder) from below (inorder) on the right (postorder)

+ 2 5
6/8/2002 2:15 PM

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

5 1
Trees 16

1
Trees 15 6/8/2002 2:15 PM

2 2

Template Method Pattern


Generic algorithm that can be specialized by redefining certain steps Implemented by means of an abstract Java class Visit methods that can be redefined by subclasses Template 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.leftChild(p)); visitBelow(p, r); r.rightResult = eulerTour(tree.rightChild(p)); visitRight(p, r); return r.finalResult; }
Trees 17

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) }
6/8/2002 2:15 PM Trees 18

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 ); }

6/8/2002 2:15 PM

Data Structure for Trees


A node is represented by an object storing
Element Parent node Sequence of children nodes

Data Structure for Binary Trees


A node is represented by an object storing
Element Parent node Left child node Right child node

B A D C
Trees

Node objects implement the Position ADT

A D F

Node objects implement the Position ADT

B A C
6/8/2002 2:15 PM

B F E
C
Trees

A
E
19 6/8/2002 2:15 PM

D C E

E
20

Java Implementation
Tree interface BinaryTree interface extending Tree Classes implementing Tree and BinaryTree and providing
Constructors Update methods Print methods expandExternal(v)

Trees in JDSL
A

v
A

JDSL is the Library of Data Structures in Java Tree interfaces in JDSL


InspectableBinaryTree InspectableTree BinaryTree Tree

JDSL was developed at Browns Center for Geometric Computing See the JDSL documentation and tutorials at http://jdsl.org
InspectableTree

removeAboveExternal(w)

Examples of updates for binary trees


expandExternal(v) removeAboveExternal(w)
6/8/2002 2:15 PM

A B
Trees

Inspectable versions of the interfaces do not have update methods InspectableBinaryTree Tree classes in JDSL
NodeBinaryTree NodeTree
21 6/8/2002 2:15 PM Trees

Tree

BinaryTree
22

You might also like