i111e algorithms & data structures 7. data …uehara/course/2019/i111e/pdf/i111e_07...i111e...

44
I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing 1 School of Information Science Ryuhei Uehara & Giovanni Viglietta [email protected] & [email protected] 2019-11-11 All materials are available at http://www.jaist.ac.jp/~uehara/couse/2019/i111e C Version

Upload: others

Post on 10-Mar-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

I111E Algorithms & Data Structures7. Data structure (3)

Binary Search Tree and its balancing

1

School of Information ScienceRyuhei Uehara & Giovanni [email protected] & [email protected]

2019-11-11All materials are available at

http://www.jaist.ac.jp/~uehara/couse/2019/i111e

C Version

Page 2: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

Announcement• 1st report: deadline is November 11, 10:50am.• Mid term examination (30pts):

– November 11, 13:30-15:10– Range: up to November 6

• Bring copy of slides, and hand written notesReports so far…

• On 8:25am, November 11:s1810235, s1810446, s1910192, s1910402, s1910416, s1910438, s1810403, s1910069, s1910231, s1910412, s1910421, s1910440, s1810433, s1910158, s1910401, s1910414, s1910436,

• Quick comments• We have sent confirmation email• Send your report to both of Giovanni and Ryuhei• File name should be, e.g., s1234567.pdf of one PDF file.

Page 3: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

Review:• We have three combinations of “data structure”, “what

to do” and “algorithm”.• “What to do”: E.g., i-th data, search, add/insert/remove.

• Array: access in O(1), search in O(n)• Array in order: search in O(log n), but add/remove in

O(n)• Linked list: access in O(n), but add/remove in O(1)• Hash: easy to add and search• Binary search tree: dynamic search

Page 4: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

Dynamic search and data structure

• Sometimes, we would like to search in dynamic data, i.e., we add/remove data in the data set.

• Example: Document management in university– New students: add to list– Alumni: remove from list– When you get credit: search the list

4

Page 5: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

Naïve idea: array or linked list?

• Data in order:– Search: binary search in O(log n) time– Add and remove: O(n) time per data

• Data not in order:– Search and remove: O(n) time per data– Add: in O(1) time

Imagine: you have 10000 students, and you have 300 new students!

5

Page 6: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

Better idea: binary search tree• For every vertex v, we have the following;

– Data in v ≧ any data in a vertex in left subtree– Data in v ≦ any data in a vertex in right subtree

25

12 29

7 20 42

3 9 15

17

35

32 37

6

Page 7: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

Better idea: binary search tree

7

• We construct binary search tree for a given data set; we learnt it can be updated in O(L) time, where L is the length of the route from a leaf to the root.

• When data is random:– Depth of the tree: O(log n)– Search, add, remove: O(log n) time.

• In the worst case:– Depth of the tree: n– When data is given in order,

we have the worst case.– Search, add, remove: O(n) time…

Page 8: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

Today: More binary search tree (BST)

8

1. Get maximum/minimum data (⇔ heap)2. Enumerate all data in the tree (⇔ array)3. “Good” and “bad” structure?4. How can we fix bad to good?

Page 9: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

1. Max/min data in BST

• Properties of a BST– All left descendants have smaller values– All right descendants have larger values

• Using the properties…– Minimum: the leftmost lowest descendant from the

root– Maximum: the rightmost lowest descendant from the

root

• Tips: It is easy to remove the minimum/maximum node (since it has at most one child)

9

Page 10: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

1. Max/min data in BST (Example)(consider remove them also)

25

12 29

7 20 42

3 9 15

17

35

32 37

10

Page 11: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

10 1

13 2 11 3

15 4 14 5 12 6 18 7

21 8 22 9

1 2 3 4 5 6 7 8 910 13 11 15 14 12 18 21 22

We can use an array, instead of linked list!

How about heap?1. Assign 1 to the root.2. For a node of number i, assign

2×i to the left child and assign 2×i+1 to the right child.

3. No nodes assigned by the number greater than n.

4. For each edge, parent stores data smaller than one in child.

[Review]

・It is easy to obtain the minimum one (at root)・However, maximum one is not easy in the tree/array

Page 12: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

Today: More binary search tree (BST)

12

1. Get maximum/minimum data (⇔ heap)2. Enumerate all data in the tree (⇔ array)3. “Good” and “bad” structure?4. How can we fix bad to good?

Page 13: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

We have three ways of enumeration(general traverse ways of a binary tree)

• Preorder:Data in the current node left subtreeright subtree

• Inorder:left subtree Data in the current noderight subtree

• Postorder:left subtree right subtree Data in the current node

13※It is easy to enumerate all data in array or linked list

Page 14: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

preorder(Node n) {if (n==null) return;visit(n); preorder(n.lson); preorder(n.rson);

}

How to traverse binary tree: preorderData in node left subtree right subtree

25

12 29

7 20 42

3 9 15

17

35

32 37

2512739

2015172942353237

14

※Depth first manner

Page 15: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

inorder(Node n) {if (n==null) return;inorder(n.lson); visit(n); inorder(n.rson);

}

How to traverse binary tree: inorderLeft subtree data in node right subtree

25

12 29

7 20 42

3 9 15

17

35

32 37

379

12151720252932353742

15

Page 16: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

postorder(Node n) {if (n==null) return;postorder(n.lson); postorder(n.rson); visit(n);

}

How to traverse binary tree: postorderLeft subtree right subtree data in node

25

12 29

7 20 42

3 9 15

17

35

32 37

397

17152012323735422925

16

Page 17: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

Example of codepublic class I111_08_p22{

public static void Main(){Node n3 = new Node (3, null, null);Node n9 = new Node (9, null, null);Node n7 = new Node (7, n3, n9);Node n17 = new Node (17, null, null);Node n15 = new Node (15, null, n17); Node n20 = new Node (20, n15, null);Node n12 = new Node (12, n7, n20);Node n32 = new Node (32, null, null); Node n37 = new Node (37, null, null); Node n35 = new Node (35, n32, n37);Node n42 = new Node (42, n35, null);Node n29 = new Node (29, null, n42); Node n25 = new Node (25, n12, n29);

inorder(n25);}

static void inorder(Node n) {if (n==null) return;inorder(n.lson);visit(n);inorder(n.rson);

}

static void visit(Node n) {System.Console.Write(n.data+" ");

}}

public class Node {public int data;public Node lson;public Node rson;public Node (int i, Node ls, Node rs) {

data = i;lson = ls;rson = rs;

}}

output

Easy to modify to pre, post

Page 18: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

Small exercise

• Make a small binary search tree (around 10 nodes)• Find the maximum and minimum data• Remove the root node• Enumerate data in preorder, inorder, and

postorder18

21

25

12

1458

18

Page 19: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

Today: More binary search tree (BST)

19

1. Get maximum/minimum data (⇔ heap)2. Enumerate all data in the tree (⇔ array)3. “Good” and “bad” structure?4. How can we fix bad to good?

Page 20: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

Efficiency of BST

23

57

20

• Best case: O(log n)– Each of n data is kept in BST

of depth log2n

• Worst case: O(n)– If we put in increasing order→

we have depth n

• “Random order” is also interesting topic, but we make it of depth O(log n) in any case.

1113

17

2 3

5

7

11

13

17

Page 21: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

Nice idea:(Self-)Balanced Binary Search Tree

• There are some algorithms that maintain to take balance of tree in depth 𝑂𝑂(log𝑛𝑛).– e.g., AVL tree, 2-3 tree, 2-color tree (red-black tree)

21

Georgy M. Adelson-Velsky(1922−2014)

Evgenii M. Landis(1921−1997)

Page 22: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

AVL tree [G.M. Adelson-Velskii and E.M. Landis ‘62]

• Property (or assertion): at each vertex, the depth of left subtree and right subtree differs at most 1.

• Example:

22

Page 23: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

AVL tree: Insertion of data

• Find a leaf v for a new data x• Store data x into v (v is not a leaf any more)• Check the change of balance by insertion of x• From v to the root, check the balance at each

vertex, and rebalance (rotation) if necessary.18

21

25

12

1458

23

We have nothing to doup to here

Page 24: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

AVL tree: Insertion of dataInsert x=4

before after

18

21

25

12

145

8

18

21

25

12

145

84

24

Page 25: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

AVL tree: Insertion of dataInsert x=10

before after

18

21

25

12

145

8

18

21

25

12

145

8

10

25

※We also have unbalanced at 12 and 18 with1:3 and 2:4, resp, but we first handle the deepest point

Page 26: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

AVL tree: Insertion of dataInsert x=20

before after

18

21

25

12

145

8

18

21

25

12

145

8

20

26

Page 27: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

AVL tree: Insertion of dataInsert x=23

before after

18

21

25

12

145

8

18

21

25

12

145

8 23

27

Page 28: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

Today: More binary search tree (BST)

28

1. Get maximum/minimum data (⇔ heap)2. Enumerate all data in the tree (⇔ array)3. “Good” and “bad” structure?4. How can we fix bad to good?

Page 29: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

AVL tree: Rebalance by rotations

• If you insert/remove data, the BST can get unbalanced.

• “Rotate” tree vertices to make the difference up to 1:– Rotation LL– Rotation RR– Double rotation LR– Double rotation RL

29

Page 30: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

Rebalance of AVL-tree by rotation:Rotation LL

• Lift up left subtree (yellow) if too deepwe have to transplant right subtree (blue)

30

Now we have・ balanced ・ not break balance・ condition of BST

Page 31: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

Rebalance of AVL-tree by rotation:Rotation LL

• Lift up left subtree (yellow) if too deepwe have to transplant right subtree (blue)

31

Now we have・ balanced ・ not break balance・ condition of BST

13

31

17

14 19

7

4 8

1 5 9

3

4

1 5

3

13

17

14 19

7

8

9

Okay, let’sconsider concrete example!

Page 32: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

Rebalance of AVL-tree by rotation:Rotation RR (just mirror image of LL)

• Lift up right subtree (green) if too deepwe have to transplant left subtree (blue)

32

Page 33: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

AVL tree: Rebalance by rotation:Double rotation LR

• When right subtree of left subtree becomes too deep, lift up the left-right subtree.

33※Condition is satisfied?※Why rotation LL does not work?

Page 34: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

AVL tree: Rebalance by rotation:Double rotation LR

• When right subtree of left subtree becomes too deep, lift up the left-right subtree.

※Condition is satisfied?※Why rotation LL does not work?

13

17

14 19

6

4 9

1 5 118

7 13

17

14 19

6

4

9

1 5118

7

Page 35: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

(If you apply rotation LL)

35

13

17

14 19

6

4 9

1 5 118

7 13

17

14 19

6

4

1 59

118

7※Condition is satisfied?※Why rotation LL does not work?

Page 36: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

AVL tree: Rebalance by rotation:Double rotation RL (just mirror image of LR)

• When left subtree of right subtree becomes too deep, lift up the right-left subtree.

36

Page 37: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

AVL tree: Example

• Insertion of 8

5

9

7

3

8

5

8

7

3

9

Double rotation LR

37

Page 38: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

AVL tree: Example

• Insertion of 6

5

8

7

3

9

6

5 8

7

3 96

Double rotation RL

38

Page 39: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

AVL tree: Example

• Insertion of 4 (balance is okay)

5 8

7

3 96

4

39

Page 40: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

AVL tree: Example

• Deletion of 6

5 8

7

3 96

4

4 8

7

3 95

Double rotation LR

40

Page 41: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

AVL tree: Example

• Insertion of 6 (balance is okay)

4 8

7

3 95

6

41

Page 42: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

AVL tree: Example

• Deletion of 8

4 8

7

3 95

6

4 9

7

3 5

6

4

9

7

3

5

6

Double rotation LR

42

Page 43: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

Time complexity of balanced binary search tree

• Search: 𝑂𝑂(log𝑛𝑛) time• Insertion/Deletion: 𝑂𝑂(log𝑛𝑛) time

– 𝑂𝑂 log𝑛𝑛 rotations– Each rotation takes constant time

• In total, on a balanced binary search tree, every operation can be done in 𝑂𝑂(log𝑛𝑛) time.(n is the number of data in the tree)

43

Page 44: I111E Algorithms & Data Structures 7. Data …uehara/course/2019/i111e/pdf/I111E_07...I111E Algorithms & Data Structures 7. Data structure (3) Binary Search Tree and its balancing

Announcement• 1st report: deadline is November 11, 10:50am.• Mid term examination (30pts):

– November 11, 13:30-15:10– Range: up to November 6

• Bring copy of slides, and hand written notesReports so far

• On 8:25am, November 11:s1810235, s1810446, s1910192, s1910402, s1910416, s1910438, s1810403, s1910069, s1910231, s1910412, s1910421, s1910440, s1810433, s1910158, s1910401, s1910414, s1910436,

• Quick comments• We have sent confirmation email• Send your report to both of Giovanni and Ryuhei• File name should be, e.g., s1234567.pdf of one PDF file.