66
CMPT 225 Binary Search Trees

Binary Search Trees. Understand tree terminology Understand and implement tree traversals Define the binary search tree property Implement binary

Embed Size (px)

Citation preview

Page 1: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

CMPT 225Binary Search Trees

Page 2: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 2

Objectives Understand tree terminology Understand and implement tree traversals Define the binary search tree property Implement binary search trees Implement the TreeSort algorithm

October 2004

Page 3: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

Trees

Page 4: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 4

Trees A set of nodes (or vertices)

with a single starting point called the root

Each node is connected by an edge to another node

A tree is a connected graph There is a path to every node

in the tree A tree has one fewer edges

than the number of nodes

October 2004

Page 5: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 5

Is it a Tree?

October 2004

yes!NO!

All the nodes are not connected

NO!There is an extra

edge (5 nodes and 5 edges)

yes! (but not a binary tree)

yes! (it’s actually the same graph as

the blue one)

Page 6: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 6

A

B C D

GE F

Tree Relationships Node v is said to be a child

of u, and u the parent of v if There is an edge between the

nodes u and v, and u is above v in the tree,

This relationship can be generalized E and F are descendants of A D and A are ancestors of G B, C and D are siblings F and G are?

October 2004

root

edge

parent of B, C, D

Page 7: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 7

More Tree Terminology A leaf is a node with no children A path is a sequence of nodes v1 … vn

where vi is a parent of vi+1 (1 i n-1) A subtree is any node in the tree along with all

of its descendants A binary tree is a tree with at most two children

per node The children are referred to as left and right We can also refer to left and right subtrees

October 2004

Page 8: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 8

Tree Terminology Example

October 2004

C

A

B C D

GE FE F G

D

G

A

leaves:C,E,F,G

path from A to D to G

subtree rooted at B

Page 9: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 9

Binary Tree Terminology

October 2004

A

B C

GD E

left subtree of A

H I J

F

right subtree of C

right child of A

Page 10: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 10

Measuring Trees

The height of a node v is the length of the longest path from v to a leaf The height of the tree is the height of the root

The depth of a node v is the length of the path from v to the root This is also referred to as the level of a node

Note that there is a slightly different formulation of the height of a tree Where the height of a tree is said to be the number of

different levels of nodes in the tree (including the root)

October 2004

Page 11: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 11

Height of a Binary Tree

October 2004

A

B C

GD E

H I J

F

A

B

E

height of node B is ?

height of the tree is ?

depth of node E is ?

level 1

level 2

level 3

2

3

2

Page 12: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

Beautiful Trees

Page 13: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 13

Is it a Tree (II)?

October 2004

yes!yes!

However, these trees are not “beautiful” (for some applications)

Page 14: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 14

Perfect Binary Trees A binary tree is perfect, if

No node has only one child And all the leaves have the

same depth A perfect binary tree of

height h has how many nodes? 2h+1 – 1 nodes, of which 2h

are leaves

October 2004

A

B C

GD E F

Page 15: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 15

Height of a Perfect Tree

October 2004

12

22

31

23 24

33 34 35 36 38

01

11

21

32 37

Each level doubles the number of nodes Level 1 has 2 nodes (21) Level 2 has 4 nodes (22) or 2 times the number in Level 1

Therefore a tree with h levels has 2h+1 - 1nodes The root level has 1 node the bottom level

has 2h nodes, that is, just over ½ the nodes are leaves

Page 16: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 16

Complete Binary Trees A binary tree is complete if

The leaves are on at most two different levels,

The second to bottom level is completely filled in, and

The leaves on the bottom level are as far to the left as possible

Perfect trees are also complete

October 2004

A

B C

D E F

Page 17: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 17

Balanced Binary Trees A binary tree is balanced if

Leaves are all about the same distance from the root The exact specification varies

Sometimes trees are balanced by comparing the height of nodes e.g. the height of a node’s right subtree is at most

one different from the height of its left subtree Sometimes a tree's height is compared to the

number of nodes e.g. red-black trees

October 2004

Page 18: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 18

Balanced Binary Trees

October 2004

A

B C

FD E

A

B C

FD E

G

Page 19: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 19

Unbalanced Binary Trees

October 2004

A

B

C D

A

B C

ED

F

Page 20: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

Tree Traversals

Page 21: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 21

Binary Tree Traversals A traversal algorithm for a binary tree visits each

node in the tree Typically, it will do something while visiting each node!

Traversal algorithms are naturally recursive There are three traversal methods

Inorder Preorder Postorder

October 2004

Page 22: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 22

InOrder Traversal Algorithm

// InOrder traversal algorithmvoid inOrder(Node *n) {

if (n != 0) {inOrder(n->leftChild);visit(n);inOrder(n->rightChild);

}}

October 2004

C++

Page 23: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 23

InOrder Traversal

October 2004

A

B C

FD E

Page 24: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 24

PreOrder Traversal Algorithm

// PreOrder traversal algorithmvoid preOrder(Node *n) {

if (n != 0) {visit(n);preOrder(n->leftChild);preOrder(n-

>rightChild);}

}

October 2004

C++

Page 25: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 25

PreOrder Traversal

October 2004

17

13 27

9 3916

11

20

4

3

2

5 7

1

6

8

visit(n)preOrder(n->leftChild)preOrder(n->rightChild)

visitpreOrder(l)preOrder(r)

visitpreOrder(l)preOrder(r)

visitpreOrder(l)preOrder(r)

visitpreOrder(l)preOrder(r)

visitpreOrder(l)preOrder(r)

visitpreOrder(l)preOrder(r)

visitpreOrder(l)preOrder(r)

Page 26: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 26

PostOrder Traversal Algorithm

// PostOrder traversal algorithmvoid postOrder(Node *n) {

if (n != 0) {postOrder(n-

>leftChild);postOrder(n-

>rightChild);visit(n);

}}

October 2004

C++

Page 27: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 27

PostOrder Traversal

October 2004

17

13 27

9 3916

11

20

1

2

4

3 5

8

7

6

postOrder(n->leftChild)postOrder(n->rightChild)visit(n)

postOrder(l)postOrder(r)visit

postOrder(l)postOrder(r)visit

postOrder(l)postOrder(r)visit

postOrder(l)postOrder(r)visit

postOrder(l)postOrder(r)visit

postOrder(l)postOrder(r)visit

postOrder(l)postOrder(r)visit

Page 28: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

Binary Tree Implementation and Binary Search Trees

Page 29: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 29

Binary Tree Implementation The binary tree can be implemented using

a number of data structures Reference structures (similar to linked lists) Arrays

We will look at three implementations Binary search trees (reference / pointers) Red – black trees (reference / pointers) Heap (arrays)

October 2004

Page 30: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 30

Problem: Accessing Sorted Data

Consider maintaining data in some order The data is to be frequently searched on the sort key

e.g. a dictionary Possible solutions might be:

A sorted array▪ Access in O(logn) using binary search▪ Insertion and deletion in linear time

An ordered linked list▪ Access, insertion and deletion in linear time

Neither of these is efficient

October 2004

Page 31: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 31

Dictionary Operations The data structure should be able to perform all

these operations efficiently Create an empty dictionary Insert Delete Look up

The insert, delete and look up operations should be performed in at most O(logn) time

October 2004

Page 32: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 32

Binary Search Tree Property

A binary search tree (BST) is a binary tree with a special property For all nodes in the tree:

▪ All nodes in a left subtree have labels less than the label of the node

▪ All nodes in a right subtree have labels greater than or equal to the label of the node

Binary search trees are fully ordered

October 2004

Page 33: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 33

BST Example

October 2004

17

13 27

9 3916

11

20

Page 34: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 34

BST InOrder Traversal

October 2004

17

13 27

9 3916

11

20

2

1

3

4 6

5

7

8

inOrder(n->leftChild)visit(n)inOrder(n->rightChild)

inOrder(l)visitinOrder(r)

inOrder(l)visitinOrder(r)

inOrder(l)visitinOrder(r)

inOrder(l)visitinOrder(r)

inOrder(l)visitinOrder(r)

inOrder(l)visitinOrder(r)

inOrder(l)visitinOrder(r)

An inorder traversal retrieves the data in sorted order

Page 35: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 35

BST Implementation Binary search trees can be implemented using a

reference structure Tree nodes contain data and two pointers to

nodes

October 2004

Node *leftChild Node *rightChilddata

pointers to Nodes

data to be stored in the tree

Page 36: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 36

BST Search To find a value in a BST search from the root

node: If the target is less than the value in the node search its

left subtree If the target is greater than the value in the node search

its right subtree Otherwise return true, or return data, etc.

How many comparisons? One for each node on the path Worst case: height of the tree + 1

October 2004

Page 37: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 37

BST Insertion The BST property must hold after insertion Therefore the new node must be inserted in the

correct position This position is found by performing a search If the search ends at the (null) left child of a node

make its left child refer to the new node If the search ends at the right child of a node make its

right child refer to the new node The cost is about the same as the cost for the

search algorithm, O(height)

October 2004

Page 38: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 38

BST Insertion Example

October 2004

47

6332

19 41

10 23

7 12

54 79

37 44 53 59 96

30 57 91 97

insert 43create new nodefind positioninsert new node

43

43

Page 39: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 39

BST Deletion After deletion the BST property must hold Deletion is not as straightforward as search or

insertion So much so that sometimes it is not even

implemented! Deleted nodes are marked as deleted in some way

There are a number of different cases that must be considered

October 2004

Page 40: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 40

BST Deletion Cases The node to be deleted has no children The node to be deleted has one child The node to be deleted has two children

October 2004

Page 41: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 41

BST Deletion Cases The node to be deleted has no children

Remove it (assigning null to its parent’s reference)

October 2004

Page 42: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 42

BST Deletion – target is a leaf

October 2004

63

41

10

7 12

54 79

37 44 53 59 96

57 91 97

delete 3047

32

19

23

30

Page 43: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 43

BST Deletion Cases The node to be deleted has one child

Replace the node with its subtree

October 2004

Page 44: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 44

BST Deletion – target has one child

October 2004

47

6332

19 41

10 23

7 12

54 79

37 44 53 59 96

30 57 91 97

delete 79replace with subtree

Page 45: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 45

BST Deletion – target has one child

October 2004

47

6332

19 41

10 23

7 12

54

37 44 53 59 96

30 57 91 97

delete 79after deletion

Page 46: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 46

BST Deletion Cases The node to be deleted has two children

Replace the node with its successor, the left most node of its right subtree ▪ It is also possible to replace the node with its predecessor,

the right most node of its left subtree If that node has a child (and it can have at most one

child) attach it to the node’s parent▪ Why can a predecessor or successor have at most one child?

October 2004

Page 47: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 47

BST Deletion – target has 2 children

October 2004

47

6332

19 41

10 23

7 12

54 79

37 44 53 59 96

30 57 91 97

delete 32

temp

find successor and detach

Page 48: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 48

BST Deletion – target has 2 children

October 2004

47

6332

19 41

10 23

7 12

54 79

37 44 53 59 96

30 57 91 97

delete 32

37

temp

temp

find successorattach target node’s children to successor

Page 49: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 49

BST Deletion – target has 2 children

October 2004

47

6332

19 41

10 23

7 12

54 79

44 53 59 96

30 57 91 97

delete 32

37

temp

- find successor- attach target’s children to successor- make successor child of target’s parent

Page 50: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 50

BST Deletion – target has 2 children

October 2004

47

63

19 41

10 23

7 12

54 79

44 53 59 96

30 57 91 97

delete 32

37

temp

note: successor had no subtree

Page 51: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 51

BST Deletion – target has 2 children

October 2004

47

6332

19 41

10 23

7 12

54 79

37 44 53 59 96

30 57 91 97

delete 63

temp

- find predecessor*: note it has a subtree

*predecessor used instead of successor to show its location - an implementation would have to pick one or the other

Page 52: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 52

BST Deletion – target has 2 children

October 2004

47

6332

19 41

10 23

7 12

54 79

37 44 53 59 96

30 57 91 97

delete 63

temp

- find predecessor- attach predecessor’s subtree to its parent

Page 53: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 53

BST Deletion – target has 2 children

October 2004

47

6332

19 41

10 23

7 12

54 79

37 44 53 59 96

30 57 91 97

delete 63

59

temp

temp- find predecessor- attach subtree- attach target’s children to predecessor

Page 54: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 54

BST Deletion – target has 2 children

October 2004

47

6332

19 41

10 23

7 12

54 79

37 44 53 96

30 57 91 97

delete 63

59

temp- find predecessor- attach subtree- attach children- attach pre. to target’s parent

Page 55: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 55

BST Deletion – target has 2 children

October 2004

47

32

19 41

10 23

7 12

54 79

37 44 53 96

30 57 91 97

delete 63

59

Page 56: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 56

BST Efficiency

The efficiency of BST operations depends on the height of the tree

All three operations (search, insert and delete) are O(height)

If the tree is complete the height is log(n) What if it isn’t complete?

October 2004

Page 57: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 57

Height of a BST

Insert 7 Insert 4 Insert 1 Insert 9 Insert 5 It’s a complete tree!

October 2004

7

4 9

1 5height = log(5) = 2

Page 58: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 58

Height of a BST

Insert 9 Insert 1 Insert 7 Insert 4 Insert 5 It’s a linked list with a lot

of extra pointers!

October 2004

7

1

9

5

4height = n – 1 = 4 = O(n)

Page 59: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 59

Balanced BSTs

It would be ideal if a BST was always close to complete i.e. balanced

How do we guarantee a balanced BST? We have to make the insertion and deletion

algorithms more complex▪ e.g. red – black trees.

October 2004

Page 60: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 60

Sorting and Binary Search Trees

It is possible to sort an array using a binary search tree Insert the array items into an empty tree Write the data from the tree back into the array using an

InOrder traversal Running time = n*(insertion cost) + traversal

Insertion cost is O(h) Traversal is O(n) Total = O(n) * O(h) + O(n), i.e. O(n * h) If the tree is balanced = O(n * log(n))

October 2004

Page 61: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

Tree Quiz

Page 62: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 62

Tree Quiz I

Write a recursive function to print the items in a BST in descending order

October 2004

class Node {public:

int data;Node *leftc;Node *rightc;

};

Page 63: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 63

Tree Quiz II

Write a recursive function to delete a BST stored in dynamic memory

October 2004

class Node {public:

int data;Node *leftc;Node *rightc;

};

Page 64: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

Summary

Page 65: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 65

Summary

Trees Terminology: paths, height, node relationships, …

Binary search trees Traversal

▪ Post-order, pre-order, in-order Operations

▪ Insert, delete, search Balanced trees

Binary search tree operations are efficient for balanced trees

October 2004

Page 66: Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary

John Edgar 66

Readings

Carrano Ch. 10

October 2004