1. Trang chủ
  2. » Trung học cơ sở - phổ thông

index of cnpmpth02004slidepdf

22 9 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

[r]

(1)

CH

ƯƠ

NG 1: CÂY (TREE)

GV Ngô Công Th

ng

B

môn Công ngh

ph

n m

m

Khoa Công ngh

thông tin

Website: dse.hua.edu.vn/ncthang

Email: ncthang@vnua.edu.vn

Ch

ươ

ng 1: Cây (Tree)

1

Đị

nh ngh

ĩ

a khái ni

m

2 Cây nh

phân

(2)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

1

Đị

nh ngh

ĩ

a khái ni

m

1.1

Đị

nh ngh

ĩ

a (tree)

l

Cây m

t t

p h

p h

u h

n nút,

đ

ó có m

t nút

đặ

c bi

t g

i g

c (root)

Gi

a nút có m

t quan h

phân c

p g

i

là quan h

cha con.

l

M

t khơng có nút g

i r

ng

(null tree).

l

Các ví d

v

cây

1.3

Ví d

1: M

c l

c c

a m

t ch

ươ

ng

đượ

c bi

u di

n d

ng cây

Ch

ươ

ng 6

6.1

6.2

6.2.1

6.2.2

6.3

(3)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

Ví d

2: Bi

u th

c s

h

c

đượ

c

bi

u di

n d

ng cây

x+y*(z-t)+u/v

1.5

Ví d

3: Các t

p bao

đượ

c

bi

u di

n d

ng cây

(4)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

1.2 Các khái ni

m

l

G

c (Root): G

c nút

đặ

c bi

t khơng có

nút cha.

Ví d

3: A g

c A cha c

a B, E, F.

B, E, F c

a A.

B, E, F c

ũ

ng g

c c

a c

a A

l

C

p (Degree): S

c

a m

t nút g

i

c

p c

a nút

đ

ó.

Ví d

3: A có c

p E, F có c

p 0.

B có c

p 2.

1.7

1.2 Các khái ni

m (

ti

ế

p

)

l

Lá (Leaf): Nút có c

p b

ng khơng g

i hay

nút t

n cùng.

Ví d

3: C,D,E,F lá.

l

Nút nhánh (Branch Node): Nút không

đượ

c

g

i nút nhánh hay nút trong.

Ví d

3:

B nút nhánh.

l

M

c (Level): G

c có m

c N

ế

u nút cha

có m

c i nút có m

c i+1.

(5)

Ngơ Cơng Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

1.2 Các khái ni

m (

ti

ế

p

)

l

Chi

u cao c

a (Height) hay chi

u sâu c

a

cây (Depth): Là s

m

c l

n nh

t c

a nút có

cây.

Ví d

1: Cây có chi

u cao 3

Ví d

2: Cây có chi

u cao 5

Ví d

3: Cây có chi

u cao 3

l

Đườ

ng

đ

i (Path): N

ế

u n

1

, n

2

, , n

k

là dãy nút

mà n

i

là cha c

a n

i+1

(1

i<k) dãy

đ

ó g

i

đườ

ng

đ

i t

n

1

đế

n n

k

Độ

dài c

a

đườ

ng

đ

i

b

ng s

nút tr

đ

i .

Ví d

3:

Đườ

ng

đ

i t

A

đế

n C c

độ

dài 3-1=2.

Đườ

ng

đ

i t

A

đế

n E c

độ

dài 2-1=1.

1.9

1.2 Các khái ni

m (

ti

ế

p

)

l

N

ế

u th

t

c

a m

t nút

đượ

c coi

tr

ng

đ

ang xét có th

t

, ng

ượ

c l

i

là khơng có th

t

.

l

Th

ườ

ng th

t

c

a m

t nút

(6)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

1.2 Các khái ni

m (

ti

ế

p

)

l

Đố

i v

i cây, quan h

cha con, ng

ườ

i

ta m

r

ng ph

ng theo quan h

gia t

c.

l

R

ng (Forest): N

ế

u có m

t t

p h

u h

n

các phân bi

t ta g

i t

p

đ

ó r

ng.

l

N

ế

u b

nút g

c c

a m

t ta s

m

t r

ng

1.11

2 Cây nh

phân

2.1

Đị

nh ngh

ĩ

a tính ch

t

2.1.1

Đị

nh ngh

ĩ

a nh

phân

l

Cây nh

phân d

ng

đặ

c bi

t c

a c

u trúc

cây, m

i nút ch

có t

i

đ

a con.

(7)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

Ví d

1: Hai sau

đ

ây khác nhau

1.13

Ví d

2: Cây nh

phân suy bi

ế

n có

d

ng m

t danh sách tuy

ế

n tính

Cây l

ch trái

(8)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

Ví d

2: Cây nh

phân suy bi

ế

n có d

ng

m

t danh sách tuy

ế

n tính (

ti

ế

p

)

Cây zíc z

c

1.15

2.1.1

Đị

nh ngh

ĩ

a nh

phân (

ti

ế

p

)

(9)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

2.1.1

Đị

nh ngh

ĩ

a nh

phân (

ti

ế

p

)

l

Cây nh

phân

đầ

y

đủ

: Là nh

phân mà

nút

m

i m

c c

a nút nhánh

đề

u có hai con.

Cây nh

phân

đầ

y

đủ

tr

ườ

ng h

p

đặ

c bi

t c

a

cây nh

phân hồn ch

nh.

1.17

2.1.2 Tính ch

t

l

S

l

ượ

ng t

i

đ

a nút

m

c i

nh

phân 2

(i-1)

(i

1).

(10)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

2.2 L

ư

u tr

nh

phân

2.2.1 L

ư

u tr

k

ế

ti

ế

p

l

V

i nh

phân

đầ

y

đủ

, ta

đ

ánh s

nút t

tr

đ

i, t

trái qua ph

i, h

ế

t m

c

này

đế

n m

c khác.

l

Dùng véc t

ơ

V l

ư

u tr

nh

phân, nút th

i c

a

đượ

c l

ư

u tr

nh

V[i] Ví d

:

1.19

2.2.1 L

ư

u tr

k

ế

ti

ế

p (

ti

ế

p

)

l

V

i cách l

ư

u tr

b

ng m

ng, bi

ế

t

đị

a

ch

c

a nút cha s

tính

đượ

c

đị

a ch

c

a

nút ng

ượ

c l

i N

ế

u nút cha i thì

con trái 2i ph

i 2i+1 N

ế

u nút

con i nút cha [i/2].

l

N

ế

u không

đầ

y

đủ

ta ph

i thêm các

nút tr

ng vào

để đươ

c nh

phân

đầ

y

(11)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

Ví d

1.21

2.2.2 L

ư

u tr

ph

n tán

l

Trong cách l

ư

u tr

này, m

i nút

ng v

i m

t

ph

n t

nh

có quy cách d

ướ

i

đ

ây.

l

Để

truy nh

p vào nút nh

phân c

n

có m

t tr

T tr

vào nút g

c c

a

đ

ó.

(12)

Ngơ Cơng Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

Ví d

1.23

2.3 Các phép toán duy

t nh

phân

l

Phép x

lý nút (g

i chung

phép th

ă

m - visit) cách th

ă

m t

t c

nút

c

a m

t cách h

th

ng, cho m

i nút

ch

đượ

c th

ă

m m

t l

n

l

M

t nút có con, ta có cách duy

t,

cách duy

t

đượ

c

đị

nh ngh

ĩ

a

đệ

quy nh

ư

sau:

l

Cách 1: Duy

t theo th

t

tr

ướ

c (preorder

traversal)

(13)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

2.3 Duy

t nh

phân (

ti

ế

p

)

l

Cách 2: Duy

t theo th

t

gi

a (inorder

traversal)

l

Duy

t trái theo th

t

gi

a

l

Th

ă

m g

c

l

Duy

t ph

i theo th

t

gi

a

l

Cách 3: Duy

t theo th

t

sau ( postorder

traversal)

l

Duy

t trái theo th

t

sau

l

Duy

t ph

i theo th

t

sau

l

Th

ă

m g

c

1.25

(14)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

2.3 Duy

t nh

phân (

ti

ế

p

)

l

Các th

t

c duy

t nh

phân

đề

u

đượ

c

vi

ế

t

d

ng

đệ

qui.

l

Gi

s

nh

phân l

ư

u tr

b

ng danh

sách liên k

ế

t, T tr

tr

t

i g

c, phép

th

ă

m in giá tr

tr

ườ

ng Infor c

a nút

đ

ó.

1.27

Duy

t theo th

t

tr

ướ

c:

Procedure PreOrder(T)

If T =

φ

then

Return

Else Begin

Write(Infor(T))

Call PreOrder(Lptr(T))

Call PreOrder(Rptr(T))

(15)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

Duy

t theo th

t

gi

a:

Procedure InOrder(T)

If T =

φ

then Begin

Return

End

Else Begin

Call InOrder(Lptr(T))

Write(Infor(T))

Call InOrder(Rptr(T))

End;

Return

1.29

Duy

t theo th

t

sau:

Procedure PostOrder(T)

If T =

φ

then Begin

(16)

Bài t

p

l

Bài 1:

l

Xây d

ng nh

phân bi

u di

n bi

u th

c:

(a+b/c)*(d-e*f)

l

V

s

ơ đồ

l

ư

u tr

cây nh

phân bi

u di

n bi

u

th

c

d

ng l

ư

u tr

k

ế

ti

ế

p, l

ư

u tr

liên k

ế

t.

l

Cho bi

ế

t th

t

các nút duy

t nh

phân

đ

ó theo cách.

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01 1.31

Bài t

p (ti

ế

p)

Bài Cho nh

phân d

ướ

i

đ

ây Hãy

l

V

s

ơ

đồ

l

ư

u tr

nh

phân

d

ng l

ư

u tr

k

ế

ti

ế

p l

ư

u tr

liên k

ế

t

(17)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

3 Cây t

ng quát

l

Cây t

ng quát có c

p m

đ

ó.

l

N

ế

u bi

u di

n t

ng quát b

ng danh sách

liên k

ế

t m

t nút có nhánh s

b

y nhiêu tr

ườ

ng liên k

ế

t, cách bi

u di

n

ph

c t

p N

ế

u bi

u di

n b

ng m

ng

trình x

lý c

ũ

ng r

t ph

c t

p.

l

Để

đơ

n gi

n ta bi

u di

n t

ng quát b

ng

nh

phân Ta nh

n th

y v

i b

t k

nút

cây t

ng quát n

ế

u có ch

có:

l

M

t nút c

c trái (con c

)

l

M

t nút em k

c

n ph

i

1.33

3 Cây t

ng quát

l

Khi chuy

n sang nh

phân t

ươ

ng

đươ

ng,

m

i nút có trái c

c trái, ph

i

em k

c

n ph

i.

(18)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

Ví d

:

Cây t

ng quát

Cây nh

t

ươ

ng

đươ

phân

ng

1.35

3 Cây t

ng quát

l

Sau chuy

n thành nh

phân t

ươ

ng

đươ

ng ta có th

l

ư

u tr

t

ng quát

b

ng danh sách liên k

ế

t.

(19)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

4

ng d

ng

4.1 Cây bi

u di

n bi

u th

c

l

Bi

u th

c s

h

c v

i phép tốn ngơi nh

ư

+ - * / có th

bi

u di

n b

i nh

phân có

nút v

i quy cách nh

ư

sau:

1.37

4.1 Cây bi

u di

n bi

u th

c (

ti

ế

p

)

(20)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

Ví d

: Bi

u di

n bi

u th

c a*b+c/2

b

ng nh

phân sau:

1.39

4.2

Đị

nh giá tr

bi

u th

c

l

Thu

t gi

i

đị

nh giá tr

bi

u th

c bi

u di

n b

i nh

phân có g

c E

Thu

t gi

i

đượ

c vi

ế

t d

ướ

i d

ng

đệ

quy:

Function EVAL(E)

Case

TYPE(E)=0: Begin F:=RPTR(E)

Return(Value(F))

End

TYPE(E)=1: Return ( EVAL(LPTR(E))+EVAL(RPTR(E)))

TYPE(E)=2: Return ( EVAL(LPTR(E))-EVAL(RPTR(E)))

TYPE(E)=3: Return ( EVAL(LPTR(E))*EVAL(RPTR(E)))

TYPE(E)=4: Return ( EVAL(LPTR(E))/EVAL(RPTR(E)))

TYPE(E)=5: Return ( - EVAL(RPTR(E)))

Else Return(00)

End case

(21)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

4.3 Xác

đị

nh bi

u th

c t

ươ

ng

đươ

ng

l

Cho nh

phân bi

u di

n bi

u th

c tr

b

i A, B Hàm xác

đị

nh bi

u th

c t

ươ

ng

đươ

ng Similar cho giá tr

True n

ế

u bi

u

th

c t

ươ

ng

đươ

ng, ng

ượ

c l

i cho giá tr

False.

1.41

Hàm Similar

Function Similar(A,B)

B

ướ

c { Ki

m tra lo

i g

c cây}

If TYPE(A)# TYPE(B) then Return(False)

B

ướ

c { Ki

m tra tính t

ươ

ng

đươ

ng }

Case

TYPE(A)=0 : If Value(RPTR(A)) # Value(RPTR(B)) then Return(False)

Else Return(True)

TYPE(A)=1 OR TYPE(A)=3 : { Phép + ho

c * }

Begin

(22)

Ngô Công Thắng Bài giảng Cấu trúc liệu giải thuật - Chương 01

BTVN

l

Xây d

ng nh

phân bi

u di

n bi

u

th

c sau: a/b - c*d

l

Vi

ế

t gi

mã tính giá tr

c

a bi

u th

c trên.

Ngày đăng: 05/04/2021, 07:30

w