Вы находитесь на странице: 1из 63

Bi gi ng C u trc d li u 1

Gi ng vin:
Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

Kenneth H.Rosen, Ton r i r c ng d ng trong Tin h c, ltb. 5, nxb. Gio D c, 2007, tr. 131 -143. Mark A. Weiss, Data Structures & Algorithm Analysis in C++, 2nd edition, Addision Wesley, 1998, p. 41 67. inh M nh T ng, Gio trnh C u trc d li u, i h c Khoa h c T nhin, HQGHN.
HCMUS - 2009 Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n 2

Cy t ng qut Cc thao tc trn cy Cy nh phn Cy nh phn tm ki m

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

a b d i o j p e k q f l g m c h n

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

S t ch c
HCMUS - 2009

Cy th m c
5

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

Cy (cy c g c) c xc nh quy nh sau:


1. T p h p g m 1 nh l m t cy. Cy ny c g c l nh duy nh t c a n. 2. Gi s T1, T2, Tk (k 1) l cc cy khng c t nhau c g c tng ng r1, r2, rk. Gi s r l m t nh m i khng thu c cc cy Ti. Khi , t p h p T g m nh r v cc cy Ti t o thnh m t cy m i v i g c r. Cc cy T1, T2, Tk c g i l cy con c a g c r.
HCMUS - 2009 Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n 6

B c=k

Nt g c

r
cao = 3

B c=2

rk r1 r2 rk k1 T1 T2 Tk k3
Cy con Nt l ng i
HCMUS - 2009

k2

k4

k5

k6
7

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

Parent(a)?

Tm cha m t nh.
Parent(x)

Parent(b) = a

EldestChild(c) = g

Tm nh con tri nh t.
EldestChild(x)

Tm nh k ph i.
NextSibling(x)

NextSibling(g) =h

NextSibling(h)?
HCMUS - 2009 Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n 8

Duy t tr c (preorder)
abdeijcfgkh

Duy t theo chi u su a

Duy t gi a (inorder)
dbiejafckgh
d

Duy t sau (postorder)


dijebfkghca
i j k

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

void Preorder(NODE A) { NODE B; Visit(A); B = EldestChild(A); while (B != ) { Preorder(B); B = NextSibling(B); } }

void Postorder(NODE A) { NODE B; B = EldestChild(A); while (B != ) { Postorder(B); B = NextSibling(B); } Visit(A); }

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

10

void Inorder(NODE A) { NODE B; B = EldestChild(A); if (B != ) { Inorder(B); B = NextSibling(B); } Visit(A); while (B != ) { Inorder(B); B = NextSibling(B); } }

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

11

Ci t b i m ng
info 1 2 3 4 5 6 7 8 9 10 11 a b c d e f g h i j k 11 9 10
child

id 2 4 6

next 3 5 7 8

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

12

Ci t b i con tr
A

Root

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

13

Bi u di n b ng m ng
Info 1 2 3 4 5 6 7 8 9 10 11
HCMUS - 2009

Eldest Child 2 4 6 0 9 0 11 0 0 0 0

Next Sibling 0 3 0 5 0 7 8 0 10 0 0

a b c d e f g h i j k

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

14

Bi u di n b ng con tr
A

Root

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

15

Bi u di n b ng m ng
Info 1 2 3 4 5 6 7 8 9 10 11
HCMUS - 2009

Parent 0 1 1 2 2 3 3 3 5 5 7

a b c d e f g h i j k

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

16

L cy m m i nh c b c t i a b ng 2. Cc cy con c g i l cy con tri v cy con ph i. C ton b cc thao tc c b n c a cy.

typedef struct stNODE { Data key; struct stNODE *pLeft; struct stNODE *pRight; }NODE;
17

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

Cy t ch c thi u Cy bi u th c s h c Lu tr v tm ki m thng tin.


4

sin

30

Cy bi u th c: 4 * (3 4) + (1 + sin(30))
HCMUS - 2009 Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n 18

Cy nh phn tm ki m l cy nh phn th a mn cc i u ki n sau: 1. Kha c a cc nh thu c cy con tri nh hn kha g c. 2. Kha c a g c nh hn kha cc nh thu c cy con ph i. 3. Cy con tri v cy con ph i c a g c cng l cy nh phn tm ki m.

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

19

10

23

6
HCMUS - 2009

20
20

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

c i m:
C th t Khng c ph n t trng D dng t o d li u s p x p, v tm ki m

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

21

void Search(Data x, NODE *root, NODE *&p) { p = root; if (p != ) { if (x < p->key) Search(x, p->pLeft, p); else if (x > p->key) Search(x, p->pRight, p); } }

K t qu c a hm?

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

22

Cho cy nh phn tm ki m Th t duy t cc node n u s d ng Duy t gi a?


1 8

15

19 16

Nu nh n xt
C th d dng t o d li u s p x p n u dng php duy t gi a
1
HCMUS - 2009

13 14 19

18

13

14

15

16

18

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

23

Thm x vo cy root:
So snh x v rootkey N u nh hn th thm vo nhnh tri N u l n hn th thm vo nhnh ph i

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

24

void Insert (NODE *root, Data x) { NODE *q; q = new NODE; if (root == ){ q->key = x; q->pLeft = q->pRight = ; root = q; } else { if (x < root -> key) Insert (root -> pLeft, x); else if (x > root -> key) Insert (root -> pRight, x); } }

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

25

Khi xa 1 nh kh i cy nh phn tm ki m th c nh ng tr ng h p no x y ra?


nh c n xa l node l nh c n xa c 1 con nh c n xa c 2 con

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

26

nh c n xa l node l V d : xa nh 55
18 8 8 18

35 20 50

35 20 50

55

Ch n gi n xa nh ra kh i cy
HCMUS - 2009 Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n 27

nh c n xa c 1 node con V d xa node 50


18 8 8 18

35 20 50

35 20 55

55

C p nh t lin k t c a node cha


HCMUS - 2009 Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n 28

nh c n xa c 2 node con: v d xa 35
18 8

35 20 19 50

40

55

C n tm ph n t th m ng
HCMUS - 2009 Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n 29

nh c n xa c 2 node con:
Ph n t th m ng l ph n t l n nh t bn nhnh tri
18 8 8 18

20 35 20 19 50

20 19 50

40

55

40

55

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

30

nh c n xa c 2 node con:
Ph n t th m ng l ph n t nh nh t bn nhnh ph i
18 8 8 18

40 35 20 19 50

40 20 50

40

55

19

55

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

31

M gi /code: sinh vin tham kh o thm trong sch.

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

32

1. Cho cy nhi phn tm ki m t cc kha sau: 55 44 12 42 94 18 6 67 39 75 105 58 23 53 15 8 79 11. Cho bi t hnh nh cy sau khi l n l t xa cc nt c kha: 55 12 44 94

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

33

2. Bi u di n tnh tr ng cy nh phn tm ki m sau khi th c hi n cc thao tc sau:


L n l t thm cc node theo trnh t : M G B K S P D C A H L F X N T W R. Xa M. Xa S. Cho bi t k t qu sau khi duy t cy theo cc trnh t gi a, tr c v sau.

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

34

i v i php tm ki m:
Tr ng h p t t nh t: m i nt (tr nt l) u c 2 con: O(log2n) (chnh l chi u cao c a cy). Tr ng h p x u nh t: cy tr thnh danh sch lin k t: O(n). Tr ng h p trung bnh l bao nhiu? O(log2n)

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

35

3. Xy d ng gi i thu t th c hi n cc thao tc sau trn cy nh phn tm ki m: - m s node trong cy. - m s node l. - Tnh cao cy. - Tnh cao c a node x trong cy. - Xu t ra cc node c cng m c x. - Xu t ra cc node nh hn x.

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

36

- Cho bi t gi tr kha l n nh t v nh nh t - Xu t ra cc node theo th t tng d n - Vi t hm xa cc node trn cy c kha nh hn x.

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

37

T o cy nh phn tm ki m theo th t nh p nh sau: 1, 8, 9, 12, 14, 15, 16, 18, 19

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

38

T o cy nh phn tm ki m theo th t nh p nh sau: 1, 8, 9, 12, 14, 15, 16, 18, 1 19


8 9 12 14 15 16 18 19
HCMUS - 2009 Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n 39

Do G.M. Adelsen Velskii v E.M. Lendis a ra vo nm 1962. Cn g i l cy AVL. Cy cn b ng l cy nh phn tm ki m m t i m i nh c a cy, cao c a cy con tri v cy con ph i khc nhau khng qu 1.

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

40

V d :
12 8 8 12

18 11 17

18

11

17

4 2

Cy cn b ng?

Cy cn b ng?

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

41

Vi c xy d ng cy cn b ng d a trn cy nh phn tm ki m, ch b sung thm 1 gi tr cho bi t s cn b ng c a cc cy con nh th no. Cch lm g i :


typedef struct stNODE { Data key; struct stNODE *pLeft, *pRight; int bal; }NODE;

Trong gi tr bal (balance, cn b ng) c th l: 0: cn b ng; 1: l ch tri; 2: l ch ph i


HCMUS - 2009 Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n 42

Th c hi n hon ton tng t cy nh phn tm ki m.


8

10

23

20

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

43

Gi s ta chn nh m i vo g c P, c th c cc tr ng h p sau:
P = : khi chn nh m i, ta c cy c P.bal = 0. P , P.bal = 0. Chn nh m i vo khng lm l ch cy. P , P.bal = 1 (ho c 2), chn nh m i vo cy con ph i (ho c tri). Cy v n cn b ng. P , P.bal = 1 (ho c 2), chn nh m i vo cy con tri (ho c ph i). Cy c kh nng m t cn b ng.
HCMUS - 2009 Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n 44

Gi s cy l ch ph i (bal = 2), nh m i thm vo cy con ph i lm l ch cy. tQ=P pRight. C cc tr ng h p sau:


Cy Q l ch ph i (bal = 2, l ch RR): p d ng php xoay tri cho cy P. Cy Q l ch tri (bal = 1, l ch RL): p d ng xoay g c Q sang ph i, sau xoay g c P sang tri.

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

45

Q l ch ph i (RR):
P a b T1 h T2 h T3 h+1 T1 h T2 h Q a T3 h+1 Quay tri cy P P b

Q = P->pRight; P->pRight = Q->pLeft; Q->pLeft = P; P = Q;


HCMUS - 2009 Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n 46

Q l ch ph i (RR):
Quay tri cy P P 18 Q 8 35 20 50 8 18 20 35 50

55

55

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

47

Q l ch tri (RL): B c 1
P a Q T1 h c b T1 h h T2 h c Quay ph i cy Q a Q P

T4

T2

T3

h-1

Q C Q C P

= P->pRight; = Q->pLeft; -> pLeft = C->pRight; -> pRight = Q; -> pRight = C;

T3 h- 1 T4

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

48

Q l ch tri (RL): B c 2
P a Q T1 h T2 h c a b Quay tri cy P c P

T1

T2 h

T3 h- 1

T4 h

T3 h- 1 T4

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

49

Q l ch tri (RL) B c 1:
P
35

Quay ph i cy Q
35

Q
18 50 18 40

20

40

55

20

37

50

37

45

65

36

45

55

36

65

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

50

Q l ch tri (RL) B c 2:
P
35

Quay tri cy P
40

Q
18 40 35 50

20

37

50

18

37

45

55

36

45

55

20

36

65

65

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

51

Lm tng t nh khi l ch ph i

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

52

Theo Wikipedia
HCMUS - 2009 Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n 53

Th c hi n tng t cy nh phn tm ki m: xt 3 tr ng h p, v tm ph n t th m ng n u c n. Sau khi xa, n u cy l ch, th c hi n cn b ng cy. Lu : vi c cn b ng sau khi h y c th x y ra dy chuy n.

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

54

V d : xa 35
Ph n t th m ng l 36
40 40

35

50

36

50

18

37

45

55

18

37

45

55

20

36

65

20

65

Cy v n cn b ng nn khng ph i hi u ch nh

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

55

Xa ph n t 45
40 40

36

50

36

50

18

37

45

55

18

37

55

20

65

20

65

Node 50 b l ch ph i !!!

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

56

Xa ph n t 45: cn b ng l i cy
Quay tri t i node 50
40 40

36

50

36

55

18

37

55

18

37

50

65

20

65

20

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

57

Trong m i tr ng h p, th i gian tm ki m trn cy cn b ng l O(log2n) Thao tc thm 1 nt c ph c t p O(1) Thao tc xo 1 nt c ph c t p O(h)

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

58

Phng php XL ng Bi t p

1. Bi u di n tnh tr ng cy cn b ng AVL sau khi th c hi n cc thao tc sau:


L n l t thm cc node theo trnh t : 13 7 2 11 19 16 4 3 1 8 12 6 24 14 20 23 18 Xa 13. Xa 19 Lu : cho bi t cc tr ng h p m t cn b ng.

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

59

. Bi u di n tnh tr ng cy cn b ng AVL sau khi thm cc node sau: 24,12,6,21,32,17,9,5,20,7,19,30,22,27,28 Xa tu n t cc node: 7, 27,12, n u cy m t cn b ng thi cho bi t tr ng h p m t cn b ng va hi u ch nh cy

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

60

Hy gn cc s 21,3,5,2,19,7,11,17,13 vo cc v tr thch h p trn cy sao cho cy th a tnh ch t cy nhi phn tm ki m V i cy NPTK a c cu trn, hy th c hi n cc thao tc c n thi t cy tr thnh cy AVL. Sau o ti p t c thm cc node 25,22,30,8,4,45 vo cy AVL (cho bi t cc tr ng h p m t cn b ng va hi u ch nh)

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

61

2. Hy v cy AVL v i 12 nt c chi u cao c c i trong t t c cc cy AVL 12 nt. 3. Tm 1 dy N kho sao cho khi l n l t dng thu t ton thm vo cy AVL s ph i th c hi n m i thao tc cn b ng (LL, LR, RL, RR) l i t nh t 1 l n.

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

62

HCMUS - 2009

Bi gi ng C u trc d li u 1 Vn Ch Nam Nguy n Th H ng Nhung ng Nguy n c Ti n

63

Вам также может понравиться