search trees - vnu · trees 12 12 avl tree definition avl trees are balanced. an avl tree is a...

20
Search Trees Data structures and Algorithms Acknowledgement: These slides are adapted from slides provided with Data Structures and Algorithms in C++ Goodrich, Tamassia and Mount (Wiley, 2004)

Upload: others

Post on 08-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Search Trees

Data structures and Algorithms

Acknowledgement: These slides are adapted from slides provided with Data Structures and Algorithms in C++

Goodrich, Tamassia and Mount (Wiley, 2004)

Page 2: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Trees 2

Outline

Binary Search Trees

AVL Trees

(2,4) Trees

Red-Black Trees

Page 3: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Trees 3

Binary Search Trees

6

92

41 8

<

>

=

Page 4: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Trees 4

Ordered Dictionaries

Keys are assumed to come from a total order.

New operations:

� first(): first entry in the dictionary ordering

� last(): last entry in the dictionary ordering

� successors(k): iterator of entries with keys greater than or equal to k; increasing order

� predecessors(k): iterator of entries with keys less than or equal to k; decreasing order

Page 5: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Trees 5

Binary Search

Binary search can perform operation find(k) on a dictionary implemented by means of an array-based sequence, sorted by key

� similar to the high-low game

� at each step, the number of candidate items is halved

� terminates after O(log n) steps

Example: find(7)

1 3 4 5 7 8 9 11 14 16 18 19

1 3 4 5 7 8 9 11 14 16 18 19

1 3 4 5 7 8 9 11 14 16 18 19

1 3 4 5 7 8 9 11 14 16 18 19

0

0

0

0

ml h

ml h

ml h

l=m =h

Page 6: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Trees 6

Binary Search TreesA binary search tree is a binary tree storing keys (or key-value entries) at its internal nodes and satisfying the following property:

� Let u, v, and w be three nodes such that u is in the left subtree of v and w is in the right subtree of v. We have key(u) ≤ key(v) ≤ key(w)

External nodes do not store items

An inorder traversal of a binary search trees visits the keys in increasing order

6

92

41 8

Page 7: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Trees 7

Search

To search for a key k, we

trace a downward path starting at the root

The next node visited depends on the outcome of the comparison of k with the key of the current node

If we reach a leaf, the key is not found and we return null

Example: find(4):

� Call TreeSearch(4,root)

Algorithm TreeSearch(k, v)

if T.isExternal (v)

return null

if k < key(v)

return TreeSearch(k, T.left(v))

else if k = key(v)

return v

else { k > key(v) }

return TreeSearch(k, T.right(v))

6

92

41 8

<

>

=

Page 8: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Trees 8

Insertion

To perform operation insert(k, o), we search for key k (using TreeSearch)

Assume k is not already in the tree, and let let w be the leaf reached by the search

We insert k at node w and expand w into an internal node

Example: insert 5

6

92

41 8

6

92

41 8

5

<

>

>

w

w

Page 9: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Trees 9

Deletion (cont.)

We consider the case where the key k to be removed is stored at a node v whose children are both internal

� we find the internal node w

that follows v in an inorder traversal

� we copy key(w) into node v

� we remove node w and its left child z (which must be a leaf) by means of operation removeExternal(z)

Example: remove 3

3

1

8

6 9

5

v

w

z

2

5

1

8

6 9

v

2

Page 10: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Trees 10

Performance

Consider a dictionary with nitems implemented by means of a binary search tree of height h

� the space used is O(n)

� methods find, insert and remove take O(h) time

The height h is O(n) in the worst case and O(log n) in the best case

Page 11: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Trees 11

AVL Trees

6

3 8

4

v

z

Page 12: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Trees 1212

AVL Tree Definition

AVL trees are balanced.

An AVL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at most 1.

88

44

17 78

32 50

48 62

2

4

1

1

2

3

1

1

An example of an AVL tree where the

heights are shown next to the nodes:

Page 13: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Trees 13

13

Insertion in an AVL TreeInsertion is as in a binary search treeAlways done by expanding an external node.Example:

44

17 78

32 50 88

48 62

54w

b=x

a=y

c=z

44

17 78

32 50 88

48 62

before insertion after insertion

Page 14: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Trees 14

4 cases of unbalanced trees

Diagram adapted from Wikipedia's original

Page 15: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Trees 15

Page 16: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Trees 1616

Removal in an AVL TreeRemoval begins as in a binary search tree, which means the node removed will become an empty external node. Its parent, w, may cause an imbalance.

Example:

44

17

7832 50

8848

62

54

44

17

7850

8848

62

54

before deletion of 32 after deletion

Page 17: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Trees 1717

Rebalancing after a RemovalLet z be the first unbalanced node encountered while travelling up the tree from w. Also, let y be the child of z with the larger height, and let x be the child of y with the larger height.

We perform restructure(x) to restore balance at z.

As this restructuring may upset the balance of another node higher in the tree, we must continue checking for balance until the root of T is reached

44

17

7850

8848

62

54

w

c=x

b=y

a=z

44

17

78

50 88

48

62

54

Page 18: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Trees 18

18

Running Times for AVL Trees

a single restructure is O(1)

� using a linked-structure binary tree

find is O(log n)

� height of tree is O(log n), no restructures needed

insert is O(log n)

� initial find is O(log n)

� Restructuring up the tree, maintaining heights is O(log n)

remove is O(log n)

� initial find is O(log n)

� Restructuring up the tree, maintaining heights is O(log n)

Page 19: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Trees 19

(2,4) Trees

11 24

2 6 8 15

30

27 32

Page 20: Search Trees - VNU · Trees 12 12 AVL Tree Definition AVL trees are balanced. An AVL Tree is a binary search treesuch that for every internal node v of T, the heights of the children

Trees 20

Multi-Way Search TreeA multi-way search tree is an ordered tree such that

� Each internal node has at least two children and stores d −1 key-element items (ki, oi), where d is the number of children

� For a node with children v1 v2 … vd storing keys k1 k2 … kd−1

� keys in the subtree of v1 are less than k1

� keys in the subtree of vi are between ki−1 and ki (i = 2, …, d − 1)

� keys in the subtree of vd are greater than kd−1

� The leaves store no items and serve as placeholders

11 24

2 6 8 15

30

27 32