4. treesmouhoubm/=postscript/=c3620/chap4.pdf4. trees 4.3 binary search trees: the binary search...

60
4. Trees 4. Trees 4.1 Preliminaries 4.2 Binary trees 4.3 Binary search trees 4.4 AVL trees 4.5 Splay trees 4.6 B-trees Malek Mouhoub, CS340 Fall 2002 1

Upload: others

Post on 18-Jun-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

4. Trees

4.1 Preliminaries

4.2 Binary trees

4.3 Binary search trees

4.4 AVL trees

4.5 Splay trees

4.6 B-trees

Malek Mouhoub, CS340 Fall 2002 1

Page 2: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

4.1 Preliminaries

A

B C D E F G

H I J K L M N

P Q

Root

Leaves

Height=3

Malek Mouhoub, CS340 Fall 2002 2

Page 3: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Terms

� Child

� Parent

� Sibling : nodes that share a common parent.

� Leaf : a node with no children.

� Node depth : the number of links on the path from the root to

the node.

� Tree height : the depth of the deepest node.

Malek Mouhoub, CS340 Fall 2002 3

Page 4: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Recursive view

A tree is either :

� Empty

� Contains a root and N subtrees (N � 0).

Malek Mouhoub, CS340 Fall 2002 4

Page 5: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Implementation of Trees

� The tree is a collection of nodes :

struct TreeNode

Object element;

TreeNode �firstChild;

TreeNode �nextSibling;

�;

� The tree stores a reference to the root node, which is the

starting point.

Malek Mouhoub, CS340 Fall 2002 5

Page 6: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Implementation of Trees

A

B C D E F G

H I J K L M N

P Q

Root

Height=3

Malek Mouhoub, CS340 Fall 2002 6

Page 7: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Tree Traversals

// List a directory in a hierarchical file system

void FileSystem::listAll(int depth = 0) const

printName( depth );

if (isDirectory())

for each file c in this directory (for each child)

c.listAll(depth + 1); �;

// Calculate the size of a directory

void FileSystem::size( ) const

int totalSize = sizeOfThisFile();

if (isDirectory())

for each file c in this directory (for each child)

totalSize += c.size();

return totalSize; �;

Malek Mouhoub, CS340 Fall 2002 7

Page 8: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

4.2 Binary Trees

��

��

Recursive view

A binary tree is either :

� Empty

� Contains a root and N binary subtrees (0 � N � 2).

Malek Mouhoub, CS340 Fall 2002 8

Page 9: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Implementation

struct BinaryNode

Object element; // the data in the node

BinaryNode �left; // left child

BinaryNode �right; // right child

�;

Malek Mouhoub, CS340 Fall 2002 9

Page 10: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Expression trees

� Inorder traversal � infix notation.

� postorder traversal � postfix notation.

� preorder traversal � prefix notation.

+

+

a *

b c

*

+

*

d e

f

g

Malek Mouhoub, CS340 Fall 2002 10

Page 11: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Constructing an expression tree

Converting a postfix expression into an expression tree :

� Same principle as evaluating an expression in postfix notation.

� Use a stack of pointers.

For infix expression :

Step 1 : Use the algorithm seen in chapter 3 to convert the

expression in postfix notation.

Step 2 : Use the algorithm above to produce the corresponding

expression tree.

Malek Mouhoub, CS340 Fall 2002 11

Page 12: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

4.3 Binary Search Trees : The Binary Search Tree ADT

Goals :

� Binary search supports Find in������� worst-case time, but

Insert and Remove are����.

� Would like to support all three operations in������� worst-case

time.

� Today’s result : can support all three operations in�������

average-case time.

� Later : do it in������� worst-case time.

Basic Ideas :

� Use a “tree” to show the logic applied by a binary search.

Malek Mouhoub, CS340 Fall 2002 12

Page 13: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Binary Search Expanded

1 4 8 12 15 19 22

12

4

1 8 15 22

19

Malek Mouhoub, CS340 Fall 2002 13

Page 14: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Binary Search Tree Order

� Ordering property : for every node in the tree, all items in left

subtree are smaller and all items in right subtree are

larger (assume no duplicates).

X

< X> X

Malek Mouhoub, CS340 Fall 2002 14

Page 15: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Thinking Recursively

� Computing the height of a tree is complex without recursion.

� The height of a tree is one more than the maximum of the

heights of the subtrees.

X

< X> X

Hr

Hr+1

Hl

Hl+1

Malek Mouhoub, CS340 Fall 2002 15

Page 16: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Routine to Compute Height

� Handle base case (empty tree).

� Use previous observation for other case.

int height(BinaryNode �T)

If (T == null)

return -1;

else

return 1 + Max(height(T-�left),height(T-�right));

Malek Mouhoub, CS340 Fall 2002 16

Page 17: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

ADT Binary Search Tree

Structure BinarySearchTree is

Data : A set of N nodes (N� 0).

Functions :

for every bstree � Binary Search Tree, item � Comparable

BynarySearchTree Create(item) ::= return a Binary Search Tree containing item

Comparable findMax(bstree) ::= return the maximum of bstree

Comparable findMin(bstree) ::= return the minumum of bstree

Comparable find(bstree,item) ::= return the matching element if found

and ITEM NOT FOUND otherwise.

Bool isempty(list) ::= return bstree == empty

BinarySearchTree insert(bstree,item) ::= add item to bstree and return the new tree

BinarySearchTree remove(bstree,item) ::= removes item and return the new tree

Malek Mouhoub, CS340 Fall 2002 17

Page 18: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Implementation

template �class Comparable�

class BinarySearchTree;

template �class Comparable�class BinaryNode

Comparable element;

BinaryNode *left;

BinaryNode *right;

BinaryNode( const Comparable & theElement, BinaryNode *lt, BinaryNode *rt )

: element( theElement ), left( lt ), right( rt ) � � 10

friend class BinarySearchTree�Comparable�;

�;

Malek Mouhoub, CS340 Fall 2002 18

Page 19: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

template �class Comparable�

class BinarySearchTree

public:

explicit BinarySearchTree( const Comparable & notFound );

BinarySearchTree( const BinarySearchTree & rhs );

˜BinarySearchTree( );

const Comparable & findMin( ) const;

const Comparable & findMax( ) const; 10

const Comparable & find( const Comparable & x ) const;

bool isEmpty( ) const;

void printTree( ) const;

void makeEmpty( );

void insert( const Comparable & x );

void remove( const Comparable & x );

const BinarySearchTree & operator=( const BinarySearchTree & rhs );

Malek Mouhoub, CS340 Fall 2002 19

Page 20: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

private:

BinaryNode�Comparable� *root;

const Comparable ITEM NOT FOUND;

const Comparable & elementAt( BinaryNode�Comparable� *t ) const;

void insert( const Comparable & x, BinaryNode�Comparable� * & t ) const;

void remove( const Comparable & x, BinaryNode�Comparable� * & t ) const;

BinaryNode�Comparable� * findMin( BinaryNode�Comparable� *t ) const;

BinaryNode�Comparable� * findMax( BinaryNode�Comparable� *t ) const;

BinaryNode�Comparable� * find( const Comparable & x, BinaryNode�Comparable� *t ) const;

void makeEmpty( BinaryNode�Comparable� * & t ) const; 10

void printTree( BinaryNode�Comparable� *t ) const;

BinaryNode�Comparable� * clone( BinaryNode�Comparable� *t ) const;

�;

Malek Mouhoub, CS340 Fall 2002 20

Page 21: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Searching : the find function

� Set the current node to the root.

� Repeat :

– If current node is null, then item is not found.

– If item is smaller than what is stored in the current node, then

branch left.

– If item is larger than what is stored in the current node, than

branch right.

– Otherwise. we have a match.

Malek Mouhoub, CS340 Fall 2002 21

Page 22: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

findMin and findMax

� For findMin, repeatedly branch left until you reach a node

with no left child.

� For findMax, repeatedly branch right until you reach a node

with no right child.

Malek Mouhoub, CS340 Fall 2002 22

Page 23: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Running Time

� Time to perform a search is proportional to the depth of the

node that terminates the search.

� For the perfectly balanced tree, this is roughly ���� .

Malek Mouhoub, CS340 Fall 2002 23

Page 24: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Insertion

� A new item can be inserted by placing it at the location where

an unsuccessful search for it terminates.

12

4

1 8 15 22

19

18new item

Malek Mouhoub, CS340 Fall 2002 24

Page 25: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Coding

� Simplest code uses recursion.Four cases :

Case 1 : If the tree is empty, create and return a new node tree.

Case 2 : If the item matches the item in the root node do

nothing (no duplicates allowed).

Case 3 : If the item is less than the item in the root node,

recursively insert it in left subtree.

Case 4 : If item is greater than the item in the root node,

recursively insert in right subtree.

Malek Mouhoub, CS340 Fall 2002 25

Page 26: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

template �class Comparable�

void BinarySearchTree�Comparable�::

insert( const Comparable & x, BinaryNode�Comparable� * & t ) const

if( t == NULL )

t = new BinaryNode�Comparable�( x, NUL L, NULL );

else if( x � t��element )

insert( x, t��left );

else if( t��element � x )

insert( x, t��right ); 10

else

; // Duplicate; do nothing

Malek Mouhoub, CS340 Fall 2002 26

Page 27: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Running Time

� Running time is still proportional to depth.

� Arbitrary insertion no longer guarantees that the depth of the

tree is �������.

� However it can be shown that the depth of the tree will be

������� on the average, where average means all possible

insertion sequences are equally likely.

Malek Mouhoub, CS340 Fall 2002 27

Page 28: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Worst case

� The most common insertion sequences produce the worst tree.

Inserting items in sorted order is disastrous, yielding ����

operations.

A

B

C

D

E

Malek Mouhoub, CS340 Fall 2002 28

Page 29: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Bottom Line

� Insertion and access will be logarithmic on average, but this is

meaningful only if insertion sequence is reasonably random.

� If insertion sequence has some order in it, the binary search

tree will degenerate.

� Need methods of maintaining balance in the tree that preserve

a logarithmic worst-case bound.

� In the following, we will examine two candidates : AVL tree and

splay tree.

Malek Mouhoub, CS340 Fall 2002 29

Page 30: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Deletion

� Deletion algorithm is complicated. Basic problem : if the node is

deleted, it potentially disconnects the tree.

� Standard algorithm breaks into three cases :

– Node to be deleted is a leaf.

– Node to be deleted has one child.

– Node to be deleted has two children.

Malek Mouhoub, CS340 Fall 2002 30

Page 31: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Deletion of a Leaf

� Simplest case, because leaf does not connect two parts of the

tree. Wipe out the leaf node (its parent should reference a

null TreeNode instead of the leaf).

Malek Mouhoub, CS340 Fall 2002 31

Page 32: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Deletion of a 1 child node

� Bypass the node : parent of deleted node gets new

child (example below deletes 15).

12

4

1 8 15 22

19

18

delete item 15

12

4

1 8 22

19

18

� Note : root with one child is a special case, because it does not

have a parent.

� In this case, we simply obtain a new root.

Malek Mouhoub, CS340 Fall 2002 32

Page 33: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Deletion of two child node

� Step 1 : replace node contents with smallest key in right

subtree. Example below deletes 12.

12

4

1 8 15 22

19

18

delete 124

1 8 22

19

??

15

18

Malek Mouhoub, CS340 Fall 2002 33

Page 34: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Deletion of two child node

� Step 2 : delete node used as replacement.

18

4

1 8 22

19

15

18

4

1 8 22

19

??

15

� The second step in the two-child case is guaranteed to be

simple because that node cannot have a left child (why ???).

Malek Mouhoub, CS340 Fall 2002 34

Page 35: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Implementation

� Simple implementation is recursive.

� Some cases can be combined.

� The deletion algorithm potentially destroys the balance of the

tree because it is a biased algorithm.

� Notice that in the two child case, it always reduces the right

subtree’s size, potentially making the left tree heavy after a large

number of deletion/insertion pairs.

� In practice : not noticeable at all.

Malek Mouhoub, CS340 Fall 2002 35

Page 36: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

tem

pla

te�

clas

sC

ompa

rabl

e�

void

Bin

aryS

earc

hTre

e�C

ompa

rabl

e�::

rem

ove(

con

stC

ompa

rabl

e&

x,B

inar

yNod

e�C

ompa

rabl

e�*

&t

)co

nst

if(

t=

=N

ULL

)

retu

rn;

//Ite

mno

tfo

und;

dono

thin

g

if(

x�

t��

elem

ent

)

rem

ove(

x,t��

left

);

else

if(

t ��

elem

ent�

x)

rem

ove(

x,t��

right

);10

else

if(

t��

left

!=N

ULL

&&

t��

right

!=N

ULL

)//

Two

child

re

t��

elem

ent

=fin

dMin

(t��

right

)��

elem

ent;

rem

ove(

t��

elem

ent,

t��

right

);

� else

Bin

aryN

ode�

Com

para

ble�

*old

Nod

e=

t;

t=

(t��

left

!=N

ULL

)?

t��

left

:t��

right

;

del

ete

oldN

ode;��

20

Mal

ekM

ouho

ub,C

S34

0Fa

ll20

0236

Page 37: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Printing contents of the tree

� Easy to print entire tree in sorted order.

� Case 1 : if tree is empty, print nothing.

� Case 2 : if tree is not empty :

– Recursively print left tree.

– Print item at the root,

– Recursively print right tree.

� Strategy is an inorder traversal.

� Running time is ���� : constant work per item.

Malek Mouhoub, CS340 Fall 2002 37

Page 38: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4.4

AV

LTr

ees

�T

hest

ruct

ure

ofth

etr

eede

pend

son

the

orde

rin

whi

ch

keys

are

ente

red.

�E

nter

ing

the

lette

rsA

-Gin

alph

abet

ical

orde

rw

illpr

oduc

e

ade

gene

rate

tree

that

isno

thin

gm

ore

than

alin

ked

list.

�T

heso

lutio

nof

this

prob

lem

isso

meh

owto

reor

gani

zeth

e

node

sof

the

tree

asw

ere

ceiv

ene

wke

ys,m

aint

aini

nga

near

optim

altr

eest

ruct

ure.

�A

VL

tree

sar

eus

edfo

rha

ndlin

gsu

chor

gani

zatio

n.

�A

nA

VL

tree

isa

heig

ht-b

alan

ced

1-tr

eeor

HB

(1)

tree

:th

e

max

imum

diffe

renc

eal

low

edbe

twee

nth

ehe

ight

sof

any

two

subt

rees

shar

ing

aco

mm

onro

ot,i

son

e.

�T

hetw

ofe

atur

esth

atm

ake

AV

Ltr

ees

impo

rtan

tare

:

–by

setti

nga

max

imum

allo

wab

ledi

ffere

nce

inth

e

heig

htof

any

two

subt

rees

,AV

Ltr

ees

guar

ante

ea

min

imum

leve

lofp

erfo

rman

cein

sear

chin

g;an

d

–M

aint

aini

nga

tree

inA

VL

form

asne

wno

des

are

inse

rted

invo

lves

the

use

ofon

eof

ase

toff

our

poss

ible

rota

tions

.

Mal

ekM

ouho

ub,C

S34

0Fa

ll20

0238

Page 39: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

AVL trees

AVL technique used to keep a tree in height-balance :

� Each time an insertion is made, one must do the following :

1. Let the node to be inserted travel down the appropriate branch, keeping

track along the way of the deepest level node on that branch that has a

balance factor of +1 or -1 (this particular node is called pivot).

2. Inclusive and below the pivot node, recompute all balance factors along the

insertion path traced in step 1.

3. Determine whether the absolute value of the pivot node’s balance factor

switched from 1 to 2.

4. If there was such a switch, perform a manipulation of tree pointers centered

at the pivot node to bring the tree back into height-balance. This operation is

frequently referred to as an AVL-rotation.

Malek Mouhoub, CS340 Fall 2002 39

Page 40: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

AVL rotations

4 cases to consider :

Case 1 : The insertion that unbalanced the tree occurred in the left subtree of the left child

of the pivot node.

Case 2 : The insertion that unbalanced the tree occurred in the right subtree of the right

child of the pivot node.

Case 3 : The insertion causing the imbalance occurred in the right subtree of the left child of

the pivot node.

Subcase 1 : Neither the pivot node nor its left child has a right child.

Subcase 2 : Insertion is in the left subtree of the right child of the left child of the pivot.

Subcase 3 : Insertion occurs in the right subtree of the right child of the left child of the

pivot.

Case 4 : The insertion that causes the imbalance in the tree is made in the left subtree of

the right child of the pivot node. Case 4 is to case 3 as case 2 is to case 1.

Malek Mouhoub, CS340 Fall 2002 40

Page 41: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Case 1

Pivot S

M

Leftsubtreeof M

Rightsubtreeof M

Rightsubtreeof S

BF=+1

BF=0

Hei

gh

t =

h+2

Height = h

Pivot S

M

Leftsubtreeof M

Rightsubtreeof M

Rightsubtreeof S

BF=+2

BF=+1

inserting a new key

insert

rotation

Pivot

S

M

Leftsubtreeof M

Old rightsubtreeof M

Rightsubtreeof S

BF=0

BF=0

insert

balancing

Hei

gh

t =

h+2

Malek Mouhoub, CS340 Fall 2002 41

Page 42: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Case 2

Pivot S

V

Leftsubtreeof V

Rightsubtreeof V

Leftsubtreeof S

BF=-1

BF=0

Hei

gh

t =

h+2

Hei

gh

t =

h

inserting a new key

rotation

balancing

Hei

gh

t =

h+2

Pivot S

V

Leftsubtreeof V

Rightsubtreeof V

Leftsubtreeof S

BF=-2

BF=-1

insert

Pivot V

S

Leftsubtreeof S

Rightsubtreeof V

Old leftsubtreeof V

BF=0

BF=0

insert

Malek Mouhoub, CS340 Fall 2002 42

Page 43: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Case 3 : subcase 1

Pivot S BF=1

inserting a new key balancingM BF=0

Pivot S BF=2

M BF=-1

Q

Pivot Q BF=0

M BF=0 S

BF=0

BF=0

Malek Mouhoub, CS340 Fall 2002 43

Page 44: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Case 3 : subcase 2

Pivot S

Q

Leftsubtreeof Q

Rightsubtreeof Q

Rightsubtreeof S

BF=+1

BF=0

Hei

gh

t =

h+2

Hei

gh

t =

h

inserting a new key

M

Leftsubtreeof M

BF=0

Hei

gh

t =

h-1

Hei

gh

t =

h

Pivot S

Q

Leftsubtreeof Q

Rightsubtreeof Q

Rightsubtreeof S

BF=+2

BF=1

M

Leftsubtreeof M

BF=-1

insert

Pivot Q

S

Old leftsubtreeof Q

Old rightsubtreeof Q

Rightsubtreeof S

BF=0

BF=-1M

Leftsubtreeof M

BF=0

insert

Balancing

Hei

gh

t =

h+2

Malek Mouhoub, CS340 Fall 2002 44

Page 45: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Case 3 : subcase 3

Pivot S

Q

Leftsubtreeof Q

Rightsubtreeof Q

Rightsubtreeof S

BF=+1

BF=0

Hei

gh

t =

h+2

Hei

gh

t =

h

inserting a new key

M

Leftsubtreeof M

BF=0

Hei

gh

t =

h-1

Hei

gh

t =

h

Pivot S

Q

Leftsubtreeof Q

Rightsubtreeof Q

Rightsubtreeof S

BF=+2

BF=-1

M

Leftsubtreeof M

BF=-1

insert

Pivot Q

S

Old leftsubtreeof Q

Old rightsubtreeof Q

Rightsubtreeof S

BF=0

BF=0M

Leftsubtreeof M

BF=-1

insert

Balancing

Hei

gh

t =

h+2

Malek Mouhoub, CS340 Fall 2002 45

Page 46: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

4.5 Splay Trees

� Think in terms of a set of operations instead of a single one.

� Goal : guarantees that any M consecutive tree operations

starting from an empty tree take at most ��� ����� time.

� Idea : After a node is accessed, it is pushed to the root by a

series of AVL tree rotations.

Malek Mouhoub, CS340 Fall 2002 46

Page 47: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

the wrong way

� Perform single rotations, bottom up.

� In the case of inserting the keys �� �� � � � � � into an empty

tree :

– ���� is required to build the tree.

– ����� for accessing all the keys in order.

– After the keys are accessed, the tree reverts to its original

state.

Malek Mouhoub, CS340 Fall 2002 47

Page 48: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Splaying

� If the parent of the node to be pushed is the root, perform a

single rotation.

� Otherwise perform a double rotation :

– 2 cases to consider (plus symmetries).

Malek Mouhoub, CS340 Fall 2002 48

Page 49: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Case 1

G

P

X

P G

X

A

B C

A B C D

D

Malek Mouhoub, CS340 Fall 2002 49

Page 50: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Case 2

P

X

G

B

D

C

P

G

X

A

B

DC

Malek Mouhoub, CS340 Fall 2002 50

Page 51: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Advantage of the method

� When inserting items �� �� � � � � � � into an initially empty tree :

– ���� is required to insert all items (same as 1st method).

– After accessing and pushing node 1 to to root, ��� units

only are required to access node 2 (instead of � � � for the

1s method).

– After accessing and pushing the other nodes, the depth

becomes ���� .

Malek Mouhoub, CS340 Fall 2002 51

Page 52: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

4.6 B-Trees

Problem : Disk utilization of a binary search tree is extremely

inefficient. A minimum of a single page is read (at least 512

bytes) in order to get the following information : key value,

address of left and right subtrees.

First Solution : Divide a binary tree into pages and then store

each page in a block of contiguous locations on disk. The

number of seeks associated to any search will be then reduced.

� Problem when inserting new items.

� use B-trees.

Malek Mouhoub, CS340 Fall 2002 52

Page 53: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Paged Binary Trees

Malek Mouhoub, CS340 Fall 2002 53

Page 54: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

B-Trees

A B-tree of order M is an M-ary tree with the following properties :

1. The data items are stored at leaves.

2. The non leaf nodes store up to M-1 keys to guide the searching;

key i represents the smallest key in subtree i+1.

3. The root is either a leaf or has between two and M children.

4. All non leaf nodes (except the root) have between [M/2] and M

children.

5. All leaves are at the same depth and have between [L/2] and L

children, for some L.

Malek Mouhoub, CS340 Fall 2002 54

Page 55: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

B-Tree of order 5

41 66 87

8 18 26 48 51 54 72 78 83 92 97

246

810121416

41424446

66686970

18202224

2628303132

3536373839

484950

515253

54565859

72737476

787981

838485

878990

929395

979899

35

Malek Mouhoub, CS340 Fall 2002 55

Page 56: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

Cal

cula

tin

gM

,Lan

dth

ele

velo

fth

eB

-Tre

e

�E

xam

ple

:dr

ivin

gre

cord

sfo

rci

tizen

sin

the

stat

eof

Flo

rida

–10

,000

,000

reco

rds.

–R

ecor

d(d

ata)

:25

6by

tes.

–K

ey(r

epre

sent

ing

ana

me)

:32

byte

s.

–P

oint

er(b

ranc

h):

4by

tes

(add

ress

ofdi

skbl

ock)

.

�N

ode

=di

skbl

ock

=8,

192

byte

s.

�L

=�����

���

���

�(M

-1)

keys

+M

poin

ters

=8,

192

�32�

(M-1

)+

4�

M=

8,19

2

�36

M-

32=

8,19

2

�M

228

�62

5,00

0le

aves

.W

hy?

�Le

aves

wou

ldbe

onle

vel4

inth

ew

orst

case

.W

hy?

�W

orst

case

num

ber

ofac

cess

:����������.

Why

?

Mal

ekM

ouho

ub,C

S34

0Fa

ll20

0256

Page 57: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Inserting item 57

41 66 87

8 18 26 48 51 54 72 78 83 92 97

246

810121416

41424446

66686970

18202224

2628303132

3536373839

484950

515253

5456575859

72737476

787981

838485

878990

929395

979899

inserting item 57

35

Malek Mouhoub, CS340 Fall 2002 57

Page 58: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Inserting 55 : Split into 2 leaves

41 66 87

8 18 26 48 51 54 72 78 83 92 97

246

810121416

41424446

66686970

18202224

2628303132

3536373839

484950

515253

545556

72737476

787981

838485

878990

929395

979899

35

575859

57

Split into 2 leaves after inserting 55

Malek Mouhoub, CS340 Fall 2002 58

Page 59: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Inserting 40 : split into 2 leaves + split of the parent

41 66 87

35 38 48 51 54 72 78 83 92 97

41424446

66686970

2628303132

353637

484950

515253

545556

72737476

787981

838485

878990

929395

979899

575859

578 18

246

810121416

18202224

383940

26

Inserting item 40 causes a split into 2 leaves and then a split of the parent node

Malek Mouhoub, CS340 Fall 2002 59

Page 60: 4. Treesmouhoubm/=postscript/=c3620/chap4.pdf4. Trees 4.3 Binary Search Trees: The Binary Search Tree ADT Goals: Binary search supports Findin worst-case time, but Insertand Removeare

4. Trees

Deleting 99

41 66 83

35 38 48 51 54 72 78 87 92

41424446

66686970

2628303132

353637

484950

515253

545556

72737476

787981

838485

878990

9293959798

575859

578 18

246

810121416

18202224

383940

26

Malek Mouhoub, CS340 Fall 2002 60