Trees and Binary Trees

35
Trees and Binary Trees Become Rich Force Others to be Poor Rob Banks Stock Fraud The class notes are a compilation and edition from many sources. The instructor does not claim intellectual property or ownership of the lecture notes.

description

Trees and Binary Trees. Become Rich. Force Others to be Poor. Stock Fraud. Rob Banks. The class notes are a compilation and edition from many sources. The instructor does not claim intellectual property or ownership of the lecture notes. Nature View of a Tree. leaves. branches. root. - PowerPoint PPT Presentation

Transcript of Trees and Binary Trees

Page 1: Trees and  Binary Trees

Trees and Binary Trees

Become Rich

Force Others to be Poor

Rob Banks

StockFraud

The class notes are a compilation and edition from many sources. The instructor does not claim intellectual property or ownership of the lecture notes.

Page 2: Trees and  Binary Trees

Nature View of a Tree

branches

leaves

root

Page 3: Trees and  Binary Trees

Computer Scientist’s View

branches

leaves

root

nodes

Page 4: Trees and  Binary Trees

What is a Tree

A tree is a finite nonempty set of elements.It is an abstract model of a hierarchical structure.consists of nodes with a parent-child relation.Applications:

Organization chartsFile systemsProgramming environments

Computers”R”Us

Sales R&DManufacturing

Laptops DesktopsUS International

Europe Asia Canada

Page 5: Trees and  Binary Trees

subtree

Tree Terminology

Root: node without parent (A)Siblings: nodes share the same parentInternal node: node with at least one child (A, B, C, F)External node (leaf ): node without children (E, I, J, K, G, H, D)Ancestors of a node: parent, grandparent, grand-grandparent, etc.Descendant of a node: child, grandchild, grand-grandchild, etc.Depth of a node: number of ancestorsHeight of a tree: maximum depth of any node (3)Degree of a node: the number of its childrenDegree of a tree: the maximum number of its node.

A

B DC

G HE F

I J K

Subtree: tree consisting of a node and its descendants

Page 6: Trees and  Binary Trees

Tree Properties

A

B C

D

G

E F

IH

Property Value

Number of nodes

Height

Root Node

Leaves

Interior nodes

Ancestors of H

Descendants of B

Siblings of E

Right subtree of A

Degree of this tree

Page 7: Trees and  Binary Trees

Tree ADT

We use positions to abstract nodesGeneric methods:

integer size()boolean isEmpty()objectIterator elements()positionIterator positions()

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

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

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

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

Page 8: Trees and  Binary Trees

Intuitive Representation of Tree Node

List Representation( A ( B ( E ( K, L ), F ), C ( G ), D ( H ( M ), I, J ) ) )The root comes first, followed by a list of links to sub-trees

Data Link 1 Link 2 … Link n

How many link fields are needed in such a representation?

Page 9: Trees and  Binary Trees

Trees

Every tree node:object – useful informationchildren – pointers to its children

Data

Data Data Data

Data Data Data

Page 10: Trees and  Binary Trees

A Tree Representation

A node is represented by an object storing

ElementParent nodeSequence of children nodes

B

DA

C E

F

B

A D F

C

E

Page 11: Trees and  Binary Trees

Left Child, Right Sibling Representation

Data

Left Child

Right Sibling A

B C D

IHGFE

J K L

Page 12: Trees and  Binary Trees

Tree Traversal

Two main methods:PreorderPostorder

Recursive definition

Preorder: visit the roottraverse in preorder the children (subtrees)

Postordertraverse in postorder the children (subtrees)visit the root

Page 13: Trees and  Binary Trees

Preorder Traversal

A 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

Become Rich

1. Motivations 3. Success Stories2. Methods

2.1 Get a CS PhD

2.2 Start a Web Site

1.1 Enjoy Life

1.2 Help Poor

Friends

2.3 Acquired by Google

1

2

3

5

4 6 7 8

9

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

preorder (w)

Page 14: Trees and  Binary Trees

Postorder Traversal

In 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

Page 15: Trees and  Binary Trees

Binary Tree

A binary tree is a tree with the following properties:

Each internal node has at most two children (degree of two)The children of a node are an ordered pair

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, ORa tree whose root has an ordered pair of children, each of which is a binary tree

Applications:arithmetic expressionsdecision processessearching

A

B C

F GD E

H I

Page 16: Trees and  Binary Trees

BinaryTree ADT

The BinaryTree ADT extends the Tree ADT, i.e., it inherits all the methods of the Tree ADTAdditional methods:

position leftChild(p)position rightChild(p)position sibling(p)

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

Page 17: Trees and  Binary Trees

Examples of the Binary Tree

A

B C

GE

I

D

H

F

Complete Binary Tree

1

2

3

4

A

B

A

B

Skewed Binary Tree

E

C

D

5

Page 18: Trees and  Binary Trees

Differences Between A Tree and A Binary Tree

The subtrees of a binary tree are ordered; those of a tree are not ordered.

• Are different when viewed as binary trees.• Are the same when viewed as trees.

A

B

A

B

Page 19: Trees and  Binary Trees

Data Structure for Binary Trees

A node is represented by an object storing

ElementParent nodeLeft child nodeRight child node

B

DA

C E

B

A D

C E

Page 20: Trees and  Binary Trees

Arithmetic Expression Tree

Binary tree associated with an arithmetic expressioninternal nodes: operatorsexternal nodes: operands

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

2

a 1

3 b

Page 21: Trees and  Binary Trees

Decision Tree

Binary tree associated with a decision processinternal nodes: questions with yes/no answerexternal 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

Page 22: Trees and  Binary Trees

Maximum Number of Nodes in a Binary Tree

The maximum number of nodes on depth i of a binary tree is 2i, i>=0.

The maximum nubmer of nodes in a binary tree of height k is 2k+1-1, k>=0.

Prove by induction.

122 1

0

kk

i

i

Page 23: Trees and  Binary Trees

Full Binary Tree

A full binary tree of a given height k has 2k+1–1 nodes.

Height 3 full binary tree.

Page 24: Trees and  Binary Trees

Labeling Nodes In A Full Binary Tree

Label the nodes 1 through 2k+1 – 1. Label by levels from top to bottom.Within a level, label from left to right.

1

2 3

4 5 6 7

8 9 10 11 12 13 14 15

Page 25: Trees and  Binary Trees

Node Number Properties

Parent of node i is node i / 2, unless i = 1.Node 1 is the root and has no parent.

1

2 3

4 5 6 7

8 9 10 11 12 13 14 15

Page 26: Trees and  Binary Trees

Node Number Properties

Left child of node i is node 2i, unless 2i > n, where n is the number of nodes.If 2i > n, node i has no left child.

1

2 3

4 5 6 7

8 9 10 11 12 13 14 15

Page 27: Trees and  Binary Trees

Node Number Properties

Right child of node i is node 2i+1, unless 2i+1 > n, where n is the number of nodes.If 2i+1 > n, node i has no right child.

1

2 3

4 5 6 7

8 9 10 11 12 13 14 15

Page 28: Trees and  Binary Trees

Complete Binary Trees

A labeled binary tree containing the labels 1 to n with root 1, branches leading to nodes labeled 2 and 3, branches from these leading to 4, 5 and 6, 7, respectively, and so on.A binary tree with n nodes and level k is complete iff its nodes correspond to the nodes numbered from 1 to n in the full binary tree of level k.

1

2 3

75

11

4

10

6

98 15141312

Full binary tree of depth 3

1

2 3

75

9

4

8

6

Complete binary tree

Page 29: Trees and  Binary Trees

Binary Tree Traversals

Let l, R, and r stand for moving left, visiting the node, and moving right.

There are six possible combinations of traversallRr, lrR, Rlr, Rrl, rRl, rlR

Adopt convention that we traverse left before right, only 3 traversals remain

lRr, lrR, Rlrinorder, postorder, preorder

Page 30: Trees and  Binary Trees

Inorder Traversal

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

Algorithm inOrder(v)if isInternal (v)

inOrder (leftChild (v))visit(v)if isInternal (v)

inOrder (rightChild (v))

3

1

2

5

6

7 9

8

4

Page 31: Trees and  Binary Trees

Print Arithmetic Expressions

Specialization of an inorder traversal

print operand or operator when visiting nodeprint “(“ before traversing left subtreeprint “)“ after traversing right subtree

Algorithm inOrder (v)if isInternal (v){

print(“(’’)inOrder (leftChild (v))}

print(v.element ())if isInternal (v){

inOrder (rightChild (v))print (“)’’)}

2

a 1

3 b ((2 (a 1)) (3 b))

Page 32: Trees and  Binary Trees

Evaluate Arithmetic Expressions

recursive method returning the value of a subtreewhen 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))

operator stored at vreturn x y

2

5 1

3 2

Page 33: Trees and  Binary Trees

Creativity: pathLength(tree) = depth(v) v tree

Algorithm pathLength(v, n)Input: a tree node v and an initial value nOutput: the pathLength of the tree with root vUsage: pl = pathLength(root, 0);

if isExternal (v)return n

return (pathLength(leftChild (v), n + 1) +

pathLength(rightChild (v), n + 1) + n)

Page 34: Trees and  Binary Trees

Euler 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

Page 35: Trees and  Binary Trees

Euler Tour Traversal

eulerTour(node v) { perform action for visiting node on the left; if v is internal then eulerTour(v->left); perform action for visiting node from below; if v is internal then eulerTour(v->right); perform action for visiting node on the right;}