42
Chapter 7 Trees_Part3 1 SEARCH TREE

Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2 Two standard search trees: Binary Search Trees (non-balanced) All items in left sub-tree are less

Embed Size (px)

Citation preview

Page 1: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

Chapter 7 Trees_Part31

SEARCH TREE

Page 2: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

2

Search Trees

Two standard search trees:

Binary Search Trees (non-balanced)All items in left sub-tree are less than rootAll items in right sub-tree are greater than or

equal to the rootEach sub-tree is a binary search tree

AVL trees (balanced)

Page 3: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

3

Binary Search Trees

All items in left sub-tree are less than root All items in right sub-tree are greater than or equal

to the root Each sub-tree is a binary search tree

Page 4: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

Searching a Binary Tree

For every node, compare the key to be located with the value stored in the node currently pointed at.

1. If key is less than the value, go to the left subtree and try again.

2. If it is greater than that value, try the right subtree.

3. If it is the same, the search stops.

4. The search is aborted if there is no way to go – the key is not in the tree.

Page 5: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

1. Finding a Node

Finding a node with a specific key is the simplest of the major tree operations. Remember that the nodes in a binary search tree correspond to objects containing information, one of them can be considered as a key.

Page 6: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

6

Example

(a) A binary search tree T representing a dictionary D with integer keys; (b) nodes of T visited when executing operations find(76) (successful) and find(25) (unsuccessful) on D. For simplicity, we show keys but entry values.

Page 7: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

7

Page 8: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

2. Inserting a Node

1. Find the place to insert it. This is much the same process as trying to find a node which turns out not to exist.

2. Follow the path from the root to the appropriate node, which will be the parent of the new node.

3. After this parent is found, the new node is connected as its left or right child, depending on whether the new node's key is less or greater than that of the parent.

Page 9: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less
Page 10: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

10

Page 11: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

11

Example

Insertion of an entry with key 78 into the search tree . Finding the position to insert is shown in (a), and the resulting tree is shown in (b).

Page 12: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

12

Insert

Page 13: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

13

Insert

Page 14: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

14

Page 15: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

3. Deleting a Node

Deleting a node is the most complicated common operation required for binary search trees. However, deletion is important in many tree applications.

There are three cases to consider:-

1- The node to be deleted is a leaf node (has no children).

2- The node to be deleted has one child.

3- The node to be deleted has two children.

Page 16: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

Case1 : The node to be deleted has no children

To delete a leaf node, change the appropriate child field in the node's parent to point to null, instead of to the node.

Page 17: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

Case 2 : The node to be deleted has one child

The node has only two connections: to its parent and to its only child. You want to "snip" the node out of this sequence by connecting its parent directly to its child.

Page 18: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

Case 3 : The node to be deleted has two children

the node has 2 children replace the key of that node with the minimum element at the right

subtree delete the minimum element

Has either no child or only right child because if it has a left child, that left child would be smaller and would have been chosen.

Page 19: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

19

Page 20: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

20

Page 21: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

21

2- AVL Trees

AVL trees are height-balanced binary search trees Height-Balance Property: For every internal node

v of T, the heights of the children of v differ by at most 1.

Page 22: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

22

2- AVL Trees• Height-balanced binary search tree where the heights of sub-

trees differ by no more than 1:

| HL – HR | <= 1• Search effort for an AVL tree is O(log2n)

• Each node has a balance factor• Balance factors may be:

– Left High (LH) = +1 (left sub-tree higher than right sub-tree)

– Even High (EH) = 0 (left and right sub-trees same height)– Right High (RH) = -1 (right sub-tree higher than left sub-

tree)

Page 23: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

23 Figure 8-12

Page 24: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

24 Figure 8-13 An AVL tree

Page 25: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

25

Balancing Trees

Insertions and deletions potentially cause a tree to be imbalanced When a tree is detected as unbalanced, nodes are balanced by

rotating nodes to the left or right Four imbalance cases:

Left of left: the sub-tree of a left high tree has become left high

Right of right: the sub-tree of a right high tree has become right high

Right of left: the sub-tree of a left high tree has become right high

Left of right: the sub-tree of a right high tree has become left high

Each imbalance case has simple and complex rotation cases

Page 26: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

26

Page 27: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

27

Page 28: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

28

Case 1: Left of Left

• The sub-tree of a left high tree has become left high

• Simple right rotation: Rotate the out of balance node (the root) to the right

• Complex right rotation: Rotate root to the right, so the old root is the right sub-tree of the new root; the new root's right sub-tree is connected to the old root's left sub-tree

Page 29: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

29

Page 30: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

30

Case 2: Right of Right• Mirror of Case 1: The sub-tree of a right

high tree has become right high• Simple left rotation: Rotate the out of

balance node (the root) to the left• Complex left rotation: Rotate root to the

left, so the old root is the left sub-tree of the new root; the new root's left sub-tree is connected to the old root's right sub-tree

Page 31: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

31

Page 32: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

32

Case 3: Right of Left

• The sub-tree of a left high tree has become right high

• Simple double rotation right: Rotate left sub-tree to the left; rotate root to the right, so the old root's left node is the new root

• Complex double rotation right: Rotate the right-high left sub-tree to the left; rotate the left-high left sub-tree to the right

Page 33: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

33

Page 34: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

34

Case 4: Left of Right

• Mirror of Case 3: The sub-tree of a right high tree has become left high

• Simple double rotation right: Rotate right sub-tree to the right; rotate root to the left, so the old root's right node is the new root

• Complex double rotation right: Rotate the left-high right sub-tree to the right; rotate the right-high right sub-tree to the left

Page 35: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

35

Page 36: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

36AVL Node Structure

Node

key <keyType>

data <dataType>

Left <pointer to Node>

right <pointer to Node>

bal <LH, EH, RH> // Balance factor

End Node

Page 37: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

A tree was defined as either an empty structure or a structure whose children are disjoint trees.

This means that each node in some kind of trees can have more than two children. This tree is called a multiway tree of order m, or m-

way tree

Multiway Search Tree

Page 38: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

38

Multiway Search Tree con..

A multiway search tree of order m is a multiway tree in which :

1. Each node has m children and m-1 keys.

2. The keys in each node are in ascending order.

3. The keys in the first i children are smaller than the ith key.

4. The keys in the last m-i children are larger than the ith key.

Page 39: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less
Page 40: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

B- Trees operates closely with secondary storage. Property: the size of a node can be made as large as a

block. A B- tree of order m is a multi way search tree with the

following properties:

1. The root has at least two subtrees unless it is a leaf.

2. Each nonroot and each nonleaf node holds k-1 keys and k pointers to subtrees where [m/2] ≤ k ≤ m.

3. Each leaf node holds k-1 keys where [m/2] ≤ k ≤ m.

4. All leaves are usually on the same level.

B-Tree

Page 41: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

B-Tree

Page 42: Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less

42

References:• Text book, chapter 8: Binary Trees

End Of Chapter