+ All Categories
Home > Documents > Trees CLRS: chapter 12

Trees CLRS: chapter 12

Date post: 19-Mar-2016
Category:
Upload: elaina
View: 38 times
Download: 0 times
Share this document with a friend
Description:
Trees CLRS: chapter 12. A hierarchical combinatorial structure. הגדרה רקורסיבית:. 1. צומת בודד. זהו גם שורש העץ. 2. אם n הוא צומת ו T 1 ….T K הינם עצים, ניתן לבנות עץ חדש שבו n השורש ו T 1 ….T K הינם “תתי עצים”. n. n. T 1. T K. T 1. T K. מושגים:. book. c 1. c 2. c 3. - PowerPoint PPT Presentation
45
1 Trees CLRS: chapter 12
Transcript
Page 1: Trees CLRS: chapter 12

1

TreesCLRS: chapter 12

Page 2: Trees CLRS: chapter 12

2

A hierarchical combinatorial structure

הגדרה רקורסיבית:צומת בודד. זהו גם שורש העץ.. 1 הינם עצים, ניתן לבנות עץ T1….TK הוא צומת ו nאם . 2

הינם “תתי עצים”.T1….TK השורש ו n חדש שבו

T1 TKn

T1 TK

n

. . .

מושגים:

Page 3: Trees CLRS: chapter 12

3

book

c1 c2 c3

s1.1 s1.2 s1.3 s2.1 s2.2 s3.1

book c1

s1.1 s1.2 s1.3

c2 s2.1 s2.2

c3 s3.1

מושגים:book - /הורהParent( של )אבאc1, c2, c3c1, c2 - /ילדיםchildren של book

s2.1 - /צאצאDescendant( של )לא ישירbookbook,c1,s1.2 - /מסלולPath( א הורה של הקודם”אם כ)

= מס’ הקשתותאורך המסלול = מס’ הצמתים )פחות אחד(

Leafעלה/צומת ללא ילדים = book - /אב קדמוןAncestor של s3.1

Example : description of a book

Page 4: Trees CLRS: chapter 12

April 24, 2023

(height - אורך המסלול הארוך ביותר מהשורש לעלה )גובה העץ

(depth - אורך המסלול מהצומת לשורש )עומק צומת

Ordered tree

יש משמעות לסדר הילדים. מסדרים משמאל לימין.

a

b C

a

C b

( unordered tree) עץ לא מסודראם הסדר לא חשוב -

Page 5: Trees CLRS: chapter 12

April 24, 2023

}ילד ימני, ילד שמאלי{ עץ ריק או לכל צומת יש תת קבוצה של-

דוגמא:

בינאריים עצים

Full : each internal node always has both children

Page 6: Trees CLRS: chapter 12

8

The dictionary problem

• Maintain (distinct) items with keys from a totally ordered universe subject to the following operations

Page 7: Trees CLRS: chapter 12

9

The ADT

• Insert(x,D)• Delete(x,D)• Find(x,D): Returns a pointer to x if x ∊ D, and

a pointer to the successor or predecessor of x if x is not in D

Page 8: Trees CLRS: chapter 12

10

The ADT

• successor(x,D)• predecessor(x,D)• Min(D)• Max(D)

Page 9: Trees CLRS: chapter 12

11

The ADT

• catenate(D1,D2) : Assume all items in D1 are smaller than all items in D2

• split(x,D) : Separate to D1, D2, D1 with all items greater than x and D2

Page 10: Trees CLRS: chapter 12

12

Reminder from “mavo”

• We have seen solutions using unordered lists and ordered lists.

• Worst case running time O(n)

• We also defined Binary Search Trees (BST)

Page 11: Trees CLRS: chapter 12

13

Binary search trees

• A representation of a set with keys from a totally ordered universe

• We put each element in a node of a binary tree subject to:

Page 12: Trees CLRS: chapter 12

14

BST2

7

3

5 8

4

2 8

7

5 101

If y is in the left subtree of x then y.key < x.keyIf y is in the right subtree of x then y.key > x.key

Page 13: Trees CLRS: chapter 12

15

BST2

7

3

5 8

4

2 8

7

5 101

x.rightx.key

x.left

x x.parent

Page 14: Trees CLRS: chapter 12

16

Y ← nullz ← T.rootWhile z ≠ null do y ← z if x = z.key return z if x < z.key then z ← z.left else z ← z.rightreturn y

Find(x,T)

2 8

7

5 101

Page 15: Trees CLRS: chapter 12

17

Y ← nullz ← T.rootWhile z ≠ null do y ← z if x = z.key return z if x < z.key then z ← z.left else z ← z.rightreturn y

Find(5,T)

2 8

7

5 101

z

Page 16: Trees CLRS: chapter 12

18

Y ← nullz ← T.rootWhile z ≠ null do y ← z if x = z.key return z if x < z.key then z ← z.left else z ← z.rightreturn y

Find(5,T)

2 8

7

5 101

zy

Page 17: Trees CLRS: chapter 12

19

Y ← nullz ← T.rootWhile z ≠ null do y ← z if x = z.key return z if x < z.key then z ← z.left else z ← z.rightreturn y

Find(5,T)

2 8

7

5 101

z

y

Page 18: Trees CLRS: chapter 12

20

Y ← nullz ← T.rootWhile z ≠ null do y ← z if x = z.key return z if x < z.key then z ← z.left else z ← z.rightreturn y

Find(5,T)

2 8

7

5 101

z y

Page 19: Trees CLRS: chapter 12

21

Y ← nullz ← T.rootWhile z ≠ null do y ← z if x = z.key return z if x < z.key then z ← z.left else z ← z.rightreturn y

Find(5,T)

2 8

7

5 101z

y

Page 20: Trees CLRS: chapter 12

22

Y ← nullz ← T.rootWhile z ≠ null do y ← z if x = z.key return z if x < z.key then z ← z.left else z ← z.rightreturn y

Find(5,T)

2 8

7

5 101z

y

Page 21: Trees CLRS: chapter 12

23

Y ← nullz ← T.rootWhile z ≠ null do y ← z if x = z.key return z if x < z.key then z ← z.left else z ← z.rightreturn y

Find(6,T)

2 8

7

5 101z

y

Page 22: Trees CLRS: chapter 12

24

Y ← nullz ← T.rootWhile z ≠ null do y ← z if x = z.key return z if x < z.key then z ← z.left else z ← z.rightreturn y

Find(6,T)

2 8

7

5 101y

z=null

Page 23: Trees CLRS: chapter 12

25

2 8

7

5 101

Min(T)

6

Min(T.root)

min(z):While (z.left ≠ null) do z ← z.leftreturn (z)

1.5

Page 24: Trees CLRS: chapter 12

26

n ← new noden.key←xn.left ← n.right ← nully ← find(x,T)n.parent ← yif x < y.key then y.left ← n else y.right ← n

2 8

7

5 101

Insert(x,T)

Page 25: Trees CLRS: chapter 12

27

2 8

7

5 101

Insert(6,T)

n ← new noden.key←xn.left ← n.right ← nully ← find(x,T)n.parent ← yif x < y.key then y.left ← n else y.right ← n

Page 26: Trees CLRS: chapter 12

28

2 8

7

5 101

Insert(6,T)

6

yn ← new noden.key←xn.left ← n.right ← nully ← find(x,T)n.parent ← yif x < y.key then y.left ← n else y.right ← n

Page 27: Trees CLRS: chapter 12

29

2 8

7

5 101

Delete(6,T)

6

Page 28: Trees CLRS: chapter 12

30

2 8

7

5 101

Delete(6,T)

Page 29: Trees CLRS: chapter 12

31

2 8

7

5 101

Delete(8,T)

Page 30: Trees CLRS: chapter 12

32

2 8

7

5 101

Delete(8,T)

Page 31: Trees CLRS: chapter 12

33

2 8

7

5 101

Delete(2,T)

6

Switch 5 and 2 and delete the node containing 5

Page 32: Trees CLRS: chapter 12

34

5 8

7

101

Delete(2,T)

6

Switch 5 and 2 and delete the node containing 5

Page 33: Trees CLRS: chapter 12

35

delete(x,T)q ← find(x,T)If q.left = null or q.right = nullthen z ← q else z ← min(q.right) q.key ← z.key q

Page 34: Trees CLRS: chapter 12

36

delete(x,T)q ← find(x,T)If q.left = null or q.right = nullthen z ← q else z ← min(q.right) q.key ← z.key qz

Page 35: Trees CLRS: chapter 12

37

delete(x,T)q ← find(x,T)If q.left = null or q.right = nullthen z ← q else z ← min(q.right) q.key ← z.key q

Page 36: Trees CLRS: chapter 12

38

delete(x,T)q ← find(x,T)If q.left = null or q.right = nullthen z ← q else z ← min(q.right) q.key ← z.key q

z

Page 37: Trees CLRS: chapter 12

39

delete(x,T)q ← find(x,T)If q.left = null or q.right = nullthen z ← q else z ← min(q.right) q.key ← z.keyIf z.left ≠ null then y ← z.left else y ← z.right

z

Page 38: Trees CLRS: chapter 12

40

delete(x,T)q ← find(x,T)If q.left = null or q.right = nullthen z ← q else z ← min(q.right) q.key ← z.keyIf z.left ≠ null then y ← z.left else y ← z.right

z

y

Page 39: Trees CLRS: chapter 12

41

delete(x,T)q ← find(x,T)If q.left = null or q.right = nullthen z ← q else z ← min(q.right) q.key ← z.keyIf z.left ≠ null then y ← z.left else y ← z.rightIf y ≠ null then y.parent ← z.parent

z

y

Page 40: Trees CLRS: chapter 12

42

delete(x,T)q ← find(x,T)If q.left = null or q.right = nullthen z ← q else z ← min(q.right) q.key ← z.keyIf z.left ≠ null then y ← z.left else y ← z.rightIf y ≠ null then y.parent ← z.parent p = y.parentIf z = p.left then p.left = y else p.right = y

z

y

p

Page 41: Trees CLRS: chapter 12

43

delete(x,T)q ← find(x,T)If q.left = null or q.right = nullthen z ← q else z ← min(q.right) q.key ← z.keyIf z.left ≠ null then y ← z.left else y ← z.rightIf y ≠ null then y.parent ← z.parent p = y.parentIf z = p.left then p.left = y else p.right = y

z

y

p

Page 42: Trees CLRS: chapter 12

44

delete(x,T)q ← find(x,T)If q.left = null or q.right = nullthen z ← q else z ← min(q.right) q.key ← z.keyIf z.left ≠ null then y ← z.left else y ← z.rightIf y ≠ null then y.parent ← z.parent p = y.parentIf z = p.left then p.left = y else p.right = y

Page 43: Trees CLRS: chapter 12

45

Variation: Items only at the leaves

• Keep elements only at the leaves• Each internal node contains a

number to direct the search

5 9

8

7 102

1 2 5 7

8

9 11

Implementation is simpler (e.g. delete)Costs space

Page 44: Trees CLRS: chapter 12

46

Analysis

• Each operation takes O(h) time, where h is the height of the tree

• In general h may be as large as n

• Want to keep the tree with small h

Page 45: Trees CLRS: chapter 12

47

Balance

h = O(log n)How do we keep the tree balanced through insertions and deletions ?


Recommended