Balanced Search Trees Binary Search Trees Binary Search Tree - - PowerPoint PPT Presentation

balanced search trees binary search trees binary search
SMART_READER_LITE
LIVE PREVIEW

Balanced Search Trees Binary Search Trees Binary Search Tree - - PowerPoint PPT Presentation

Balanced Search Trees Binary Search Trees Binary Search Tree Binary Search Tree A binary tree is a binary search tree if each element in the left subtree is smaller than the root, each element in the right subtree is larger than the root,


slide-1
SLIDE 1

Balanced Search Trees

slide-2
SLIDE 2

Binary Search Trees

slide-3
SLIDE 3

Binary Search Tree

Binary Search Tree A binary tree is a binary search tree if

◮ each element in the left subtree is smaller than the root, ◮ each element in the right subtree is larger than the root, and ◮ the left and the right subtree are binary search trees.

r ≤ r ≥ r

3 / 34

slide-4
SLIDE 4

Implementation

42 (key, value) parent left / right subtree

4 / 34

slide-5
SLIDE 5

Dictionary

Dictionary A dictionary is an abstract data type which stores key-value pairs hand has the following operations:

◮ Insert(k, v) ◮ Find(k) ◮ Delete(k)

Insert(k, v)

◮ Inserts a key-value pair (k, v) into the dictionary.

Find(k)

◮ Returns a value with the key k.

Delete(k)

◮ Deletes a key-value pair with the key k.

5 / 34

slide-6
SLIDE 6

BST – Insert(k, v)

Idea

◮ Find a a free spot in the tree and add a node which stores (k, v).

Strategy

◮ Start at root r. ◮ If k < key(r), continue in left subtree. ◮ If k > key(r), continue in right subtree.

What if k = key(r)? Runtime

◮ O(h)

(h is the height of the tree.)

6 / 34

slide-7
SLIDE 7

BST – Insert Example

Insert the numbers 22, 80, 18, 9, 90, 24.

24

7 / 34

slide-8
SLIDE 8

BST – Insert Example

Insert the numbers 22, 80, 18, 9, 90, 24.

24 80

7 / 34

slide-9
SLIDE 9

BST – Insert Example

Insert the numbers 22, 80, 18, 9, 90, 24.

24 80 18

7 / 34

slide-10
SLIDE 10

BST – Insert Example

Insert the numbers 22, 80, 18, 9, 90, 24.

24 18 80 9

7 / 34

slide-11
SLIDE 11

BST – Insert Example

Insert the numbers 22, 80, 18, 9, 90, 24.

24 18 80 9 90

7 / 34

slide-12
SLIDE 12

BST – Insert Example

Insert the numbers 22, 80, 18, 9, 90, 24.

24 18 80 9 90 22

7 / 34

slide-13
SLIDE 13

BST – Insert Example

Insert the numbers 22, 80, 18, 9, 90, 24.

24 18 80 9 22 90

7 / 34

slide-14
SLIDE 14

BST – Find(k)

Find the node with key k. Strategy

◮ Start at root r. ◮ If k = key(r), return r. ◮ If k < key(r), continue in left subtree. ◮ If k > key(r), continue in right subtree.

Runtime

◮ O(h)

(h is the height of the tree.)

8 / 34

slide-15
SLIDE 15

BST – Find Example

Find the number 22.

24 18 80 9 22 90 22

9 / 34

slide-16
SLIDE 16

BST – Delete(k)

Delete the node with key k. Strategy

◮ n := Find(k) ◮ Let m be the node in the left subtree with the largest key or the node

in the right subtree with the smallest key.

◮ Replace n with m.

Runtime

◮ O(h)

(h is the height of the tree.)

10 / 34

slide-17
SLIDE 17

BST – Delete Example

Delete the number 24.

24 18 80 9 22 90

11 / 34

slide-18
SLIDE 18

BST – Delete Example

Delete the number 24.

22 18 80 9 90

11 / 34

slide-19
SLIDE 19

BST as Dictionary

Runtime of all operations is O(h).

◮ What is h in the worst case?

Consider inserting the sequence 1, 2, . . . , n − 1, n

1 2 n

Thus, worst case height h ∈ O(n).

◮ How do we keep the tree balanced?

12 / 34

slide-20
SLIDE 20

Rotation

y x α β γ y x α β γ

RotateR(y) RotateL(x) How do we use this to keep a tree balanced?

13 / 34

slide-21
SLIDE 21

Red-Black Trees

slide-22
SLIDE 22

Red-Black Tree

Red-Black Tree A red-black tree is a binary search tree with the following properties:

  • 0. The root is black.
  • 1. A node is either red or black.
  • 2. All Null-pointers are black.
  • 3. If a node is red, then both its children are black.
  • 4. Every path from a given node n to any of its descendant

Null-pointers contains the same number of black nodes. This

number is called black-height of n.

15 / 34

slide-23
SLIDE 23

Red-Black Tree – Example

The tree on the right validates property (0), (1), and (2).

(We will ignore Null-pointers from here.)

16 / 34

slide-24
SLIDE 24

Red-Black Tree – Example

The tree on the right validates property (3).

17 / 34

slide-25
SLIDE 25

Red-Black Tree – Example

Validation of property (3).

2 3 2 2

18 / 34

slide-26
SLIDE 26

Red-Black Tree – Example

2 2 2 2

18 / 34

slide-27
SLIDE 27

Red-Black Tree – Height

Theorem A red-black tree with n nodes has a height of at most O(log n).

19 / 34

slide-28
SLIDE 28

Red-Black Tree – Height

T ′

h′ h

T ′ is full. Thus, h′ ≤ log n.

Because h ≤ 2h′, h ≤ 2 log n ∈ O(log n)

20 / 34

slide-29
SLIDE 29

Red-Black Tree – Insert and Delete

Basic Strategy

◮ Use Insert(k, v) and Delete(k) as defined for BSTs. ◮ New added nodes are red. ◮ Problem: The resulting tree may violate some properties of a

red-black tree. Restoring Red-Black Property

◮ Done by rotation and recolouring. ◮ There are five cases for insertion and six for removal. We will not

discuss them here.

◮ General idea: Restore properties for the current layer, move the

“incorrectness" to an upper layer, and repeat this on the upper layer. Runtime

◮ O(log n) for both operations

21 / 34

slide-30
SLIDE 30

Red-Black Tree – Insertion Example

Given this red-black tree. We want to insert 4.

11 2 14 1 7 15 5 8

22 / 34

slide-31
SLIDE 31

Red-Black Tree – Insertion Example

Given this red-black tree. We want to insert 4.

11 2 14 1 7 15 5 8 4

22 / 34

slide-32
SLIDE 32

Red-Black Tree – Insertion Example

Given this red-black tree. We want to insert 4.

11 2 14 1 7 15 5 8 4

RotateL(2)

22 / 34

slide-33
SLIDE 33

Red-Black Tree – Insertion Example

Given this red-black tree. We want to insert 4.

11 7 14 2 8 15 1 5 4

RotateR(11)

22 / 34

slide-34
SLIDE 34

Red-Black Tree – Insertion Example

Given this red-black tree. We want to insert 4.

7 2 11 1 5 8 14 4 15

22 / 34

slide-35
SLIDE 35

AVL Trees

slide-36
SLIDE 36

AVL Tree

AVL Tree A binary tree is an AVL tree if, for each node, the height of the left and right subtree differ by at most one.

24 / 34

slide-37
SLIDE 37

AVL Tree – Example

1 1 −1 −1

25 / 34

slide-38
SLIDE 38

AVL Tree – Example

1 −2 −1

25 / 34

slide-39
SLIDE 39

AVL Tree – Height

Theorem An AVL tree with n nodes has a height of at most O(log n).

  • Proof. Let Nh be the min. number of nodes in an AVL tree of height h.

Nh = 1 + Nh−1 + Nh−2 ≥ 2 · Nh−2 ≥ 2h/2

Thus, h ≤ 2 log2 Nh, i. e., h ∈ O(log n).

  • 26 / 34
slide-40
SLIDE 40

AVL Tree – Insert and Delete

Basic Strategy (similar to red-black trees)

◮ Use Insert(k, v) and Delete(k) as defined for BSTs. ◮ Problem: The resulting tree may violate some properties of an AVL

tree. Restoring AVL Property

◮ Done by rotation. ◮ General idea: Restore properties for the current layer and repeat this

  • n the upper layer.

◮ We will not discuss the details here.

Runtime

◮ O(log n) for both operations

27 / 34

slide-41
SLIDE 41

AVL Tree – Insertion Example

Insert(55)

41 20 65 11 26 50 23 29

1 −1 1

28 / 34

slide-42
SLIDE 42

AVL Tree – Insertion Example

Insert(55)

41 20 65 11 26 50 23 29 55

−1 2 −1

28 / 34

slide-43
SLIDE 43

AVL Tree – Insertion Example

Insert(55)

41 20 65 11 26 50 23 29 55

−1 2 −1

RotateL(50)

28 / 34

slide-44
SLIDE 44

AVL Tree – Insertion Example

Insert(55)

41 20 65 11 26 55 23 29 50

−1 2 1

RotateR(65)

28 / 34

slide-45
SLIDE 45

AVL Tree – Insertion Example

Insert(55)

41 20 55 11 26 50 65 23 29

1 −1

28 / 34

slide-46
SLIDE 46

B-Trees

slide-47
SLIDE 47

B-Tree

B-Tree A B-Tree is a search tree such that, for some constant t ≥ 2, (1) each node n stores |n| sorted keys (t − 1 ≤ |n| ≤ 2t − 1), (2) each node which is not a leaf has |n| + 1 subtrees, and (3) all leaves are on the same layer.

The root r is excluded from property (1). Instead, 1 ≤ |r| ≤ 2t − 1.

2 11 1 5 7 8 14 15

30 / 34

slide-48
SLIDE 48

B-Tree – Splitting and Merging

Full nodes (with 2t − 1 keys) can be slitted.

◮ Remove middle key. ◮ Include it into parent node.

c x k l m n

  • c

m x k l n

  • Neighbouring nodes with t − 1 keys can be merged.

◮ Remove separating key from parent node. ◮ Add it in middle of new node.

31 / 34

slide-49
SLIDE 49

B-Tree – Shifting Keys

Keys can be shifted to decrease the size of a node and increase the size of its neighbour.

c n x k l m

  • p

c m x k l n

  • p

α α

32 / 34

slide-50
SLIDE 50

B-Tree – Insertion

Idea

◮ Similar to BSTs, find leaf which would contain the key and add it.

Problem

◮ What if leaf is full (stores 2t − 1 keys)? ◮ What if leaf cannot be split because parent is full too?

Solution

◮ When searching for leaf, split every full node on the path.

Runtime: O(t · logt n)

◮ O(t) for splitting nodes. ◮ O(logt n) for the path from root to leaf.

33 / 34

slide-51
SLIDE 51

B-Tree – Deletion

Strategy

◮ Search key in tree. ◮ For every node on path, ensure at least t keys are in the node (using

merging and shifting). Case 1: Key is in leaf.

◮ Simply delete key.

Case 2: Key is not in leaf.

◮ Replace key by k′, the largest key in left child or smallest key in right

child.

◮ Recursively delete k′.

Runtime: O(t · logt n)

◮ O(t) for merging nodes. ◮ O(logt n) for the path from root to leaf.

34 / 34