Definitions Read Weiss, 4.1 4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals...

28
Trees Definitions Read Weiss, 4.1 – 4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting trees: k-ary ↔ binary

description

bj c d g k m l i hfe a root, height=4, depth=level=0 leaf, height=0, depth=level=4 degree=2 interior node, height=2, depth=level=2 degree of tree = 2 height of tree = 4 descendants of “a” proper descendants of “a” degree=0 degree=1

Transcript of Definitions Read Weiss, 4.1 4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals...

Page 1: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

TreesDefinitions• Read Weiss, 4.1 – 4.2

Implementation• Nodes and Links• One Arrays• Three Arrays

Traversals• Preorder, Inorder, Postorder

K-ary Trees• Converting trees: k-ary ↔ binary

Page 2: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

Definitions

NodesEdgesRoot nodeInterior nodeLeafParentChildren

Ancestor / Proper ancestorDescendant / Proper

descendantLevel of a nodeHeight of a node / treeDegree of a node / treeDepth of nodePathAcyclic graph

Page 3: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

bj

c

dg

k

m l

i h f e

a root, height=4, depth=level=0

leaf, height=0, depth=level=4

degree=2

interior node, height=2, depth=level=2

degree of tree = 2height of tree = 4

descendants of “a”

proper descendants of “a”

degree=0

degree=1

Page 4: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

Implementing a Tree • Nodes and Links

A

B C

D

▲▲ ▲

▲ ▲

Node { Object value; Node lchild; Node rchild;} // Node

▲=null link

Page 5: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

Implementing a Tree • One array

A

B C

D

▲▲ ▲

▲ ▲

A: 0 1 2 3 4 5 6 7 8 9

- A B C - - D - - -

▲=null link

• A[1] is root• lchild of A[i] is A[2i]• rchild of A[i] is A[2i+1]• “-” means array element is null / not used• A[0] not used as a node• A[0] may be used to hold general info (e.g., number of nodes in tree)

Page 6: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

Preorder N L R

Traversals

preorder (Node t) if (t == null) return;

visit (t.value()); preorder (t.lchild()); preorder (t.rchild());

} // preorder

Page 7: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

Traversalsinorder (Node t) if (t == null) return;

inorder (t.lchild()); visit (t.value()); inorder (t.rchild());

} // inorder

• Inorder L N R

Page 8: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

Traversalspostorder (Node t) if (t == null) return;

postorder (t.lchild()); postorder (t.rchild()); visit (t.value());

} // postorder

• Postorder

L R N

Page 9: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

bj

c

dg

k

m l

i h f e

a

preorder: a j k m l b c g i h d f e

inorder: m k l j a b i g h c f d e

postorder: m l k j i h g f e d c b a

Page 10: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

K-ary Trees

n

g

e

jk

md

c

b

f

ip

q

a

degree of tree = 4degree of nodes f and n = 3height of tree = 3depth=level of m = 2

Page 11: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

K-ary Tree => Binary Tree

n

g

e

jk

md

c

b

f

ip

q

a

K-ary Binaryroot rootleftmost child left childright sibling right child

Page 12: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

n

g

e

jk

md

c

b

f

ip

q

a

n

g

e

jk

md

c

b

f

ip

q

a

TraversalsK-ary Tree Binary Tree

Preorder:Inorder:Postorder:

Preorder:Inorder:Postorder:

Page 13: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

Binary Search Trees

Page 14: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

Have all properties of binary treeItems in left subtree are smaller than items in

any nodeItems in right subtree are larger than items in

any node

BST Properties

Page 15: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

Items must be comparableAll items have a unique valueGiven two distinct items x and y either

value(x) < value(y)value(x) > value(y)

If value(x) = value(y) then x = yIt will simplify programming to assume there

are no duplicates in our set of items.

Items

Page 16: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

Need to map Items to a numerical valueIntegers

Value(x) = xPeople

Value(x) = ssnValue(x) = student id

Items

Page 17: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

ConstructorInsertFind

FindminFindmax

Remove

BST Operations

Page 18: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

Generally Recursive

BST Operations

BinaryNode operation( Comparable x, BinaryNode t ) {// End of path

if( t == null ) return null;

if( x.compareTo( t.element ) < 0 )return operation( x, t.left );

else if( x.compareTo( t.element ) > 0 )return operation( x, t.right );

else return t; // Match}

Page 19: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

private BinaryNode find( Comparable x, BinaryNode t )

{ if( t == null ) return null; if( x.compareTo( t.element ) < 0 ) return find( x, t.left ); else if( x.compareTo( t.element ) > 0 ) return find( x, t.right ); else return t; // Match }

BST Find Method

Page 20: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

RemoveNode is leaf

Remove nodeNode has one child

Replace node with childNode has two children

Replace node with smallest child of right subtree.

BST Remove Operations

Page 21: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

private BinaryNode remove( Comparable x, BinaryNode t ) { if( t == null ) return t; // Item not found; do nothing if( x.compareTo( t.element ) < 0 ) t.left = remove( x, t.left ); else if( x.compareTo( t.element ) > 0 ) t.right = remove( x, t.right ); else if( t.left != null && t.right != null ) // Two children { t.element = findMin( t.right ).element; t.right = remove( t.element, t.right ); } else t = ( t.left != null ) ? t.left : t.right; return t; }

Remove method

Page 22: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

Review depth/heightDepth

Depth is number of path segments from root to node

Depth of node is distance from root to that node.

Depth is uniqueDepth of root is 0

Internal Path Length

Page 23: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

HeightHeight is maximum distance from node to a

leaf.There can be many paths from a node to a leaf.The height of the tree is another way of saying

height of the root.

Internal Path Length

Page 24: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

IPL is the sum of the depths of all the nodes in a tree

It gives a measure of how well balanced the tree is.

Internal Path Length

Page 25: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

Internal Path Length

11

2

N = 4IPL = 1 + 1 + 2 = 4

Page 26: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

Internal Path Length

1

2

N = 4IPL = 1 + 2 + 3 = 6

3

Page 27: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

Calculate IPL of all possible trees

Average IPL for N nodesN = 4

1

2

3

11

2

1

2 2

Page 28: Definitions Read Weiss, 4.1  4.2 Implementation Nodes and Links One Arrays Three Arrays Traversals Preorder, Inorder, Postorder K-ary Trees Converting.

Simple to understandWorks for small datasetsBasis for more complicated treesUsing inheritance can implement

AVL treesSplay treesRed Black trees

Where do BST fit in