Cây
8.3. Các phương pháp duyệt cây
Tài liệu này được soạn theo sách Toán học rời rạc ứng dụng trong tin học , K. H.
Rosen, người dòch: Phạm Văn Thiều và Đặng Hữu Thònh, Nhà xuất bản Khoa học
và kỹ thuật, 1998.
Tài liệu lưu hành nội bộ
10/01/15
8.3. Các phương
1
Hệ đòa chỉ phổ dụng
•
•
•
Hệ đòa chỉ phổ dụng là cách gán nhãn cho tất cả các đỉnh bằng
phương pháp truy hồi như sau:
– Gán nhãn cho gốc bằng số nguyên 0. Sau đó k đỉnh con của nó
(ở mức 1) từ trái sang phải được gán các nhãn là 1, 2, 3,…, k.
– Với mọi đỉnh v ở mức n có nhãn là A, thì kv đỉnh con của nó từ
trái sang phải được gán các nhãn là A.1, A.2,…, A.kv .
Nhận xét: Theo thủ tục này, đỉnh v ở mức n, với n ≥ 1, có nhãn là
x1.x2…xn , trong đó đỉnh xi ở mức i.
Ứng dụng: sắp tất cả các đỉnh của cây theo thứ tự từ điển của các
nhãn của chúng trong hệ đòa chỉ phổ dụng.
10/01/15
8.3. Các phương
2
Hệ đòa chỉ phổ dụng
•
Ví dụ 1. Gán nhãn theo đòa chỉ phổ dụng cho tất cả các đỉnh của cây
sau. Thứ tự từ điển của các nhãn là: 0 < 1 < 1.1 < 1.2 < 1.3 < 2 < 3 < 3.1 <
3.1.1 < 3.1.2 < 3.1.2.1 < 3.1.2.2 < 3.1.2.3 < 3.1.2.4 < 3.1.3 < 3.2 < 4 < 4.1 <
5 < 5.1 < 5.1.1 < 5.2 < 5.3
0
1
2
3
3.1
1.1 1.2 1.3
4
3.2
5
4.1 5.1 5.2 5.3
3.1.2
3.1.1
3.1.2.1
5.1.1
3.1.3
3.1.2.4
3.1.2.2 3.1.2.3
10/01/15
8.3. Các phương
3
Các thuật toán duyệt cây
•
Đònh nghóa 1. Giả sử T là cây có gốc và được sắp thứ tự với gốc r.
– Nếu T chỉ có r thì r là cách duyệt tiền thứ tự của T;
– nếu không thì gọi T1, T2,…, Tn là các cây con tại r từ trái qua phải
của T.
° Duyệt tiền thứ tựï sẽ viếng thăm r đầu tiên;
° tiếp tục duyệt T theo kiểu tiền thứ tự, sau đó duyệt T theo
1
2
kiểu tiền thứ tự,… cho đến khi Tn được duyệt theo kiểu tiền
thứ tự.
10/01/15
8.3. Các phương
4
Các thuật toán duyệt cây
•
Duyệt cây theo kiểu tiền thứ tự
r
10/01/15
Bước 1: thăm r
T1
T2
Tn
Bước 2:
thăm T1
kiểu tiền thứ tự
Bước 3:
thăm T2
kiểu tiền thứ tự
Bước n + 1:
thăm Tn
kiểu tiền thứ tự
8.3. Các phương
5
Các thuật toán duyệt cây
•
Ví dụ 2. Duyệt kiểu tiền thứ tự sẽ viếng thăm các đỉnh của cây có
gốc và được sắp dưới đây theo thứ tự nào?
a
b
k
f
h i
l
j
n
d
g
e
10/01/15
c
o
m
p
8.3. Các phương
6
Các thuật toán duyệt cây
•
Ví dụ 2. (tiếp theo)
a
c
b
e
d g h i
l
n
o
m
p
p
b e j
k
f c
n
o
p
a
10/01/15
c
j
m
l
a
f
e
k
h i
j
o
b
g
f
k
n
a
d
d g l
b e j
m h i
k n o p f c
8.3. Các phương
d g l
7
m h i
Các thuật toán duyệt cây
•
•
•
•
•
•
•
Thuật toán 1. Duyệt kiểu tiền thứ tự
procedure preorder(T: cây có gốc và được sắp)
r := gốc của T
liệt kê r
for mỗi cây con c của r từ trái sang phải
begin
T(c) := cây con với gốc c
preorder(T(c))
end
10/01/15
8.3. Các phương
8
Các thuật toán duyệt cây
•
Đònh nghóa 2. Giả sử T là cây có gốc và được sắp thứ tự với gốc r.
– Nếu T chỉ có r thì r là cách duyệt trung thứ tự của T;
– nếu không, thì gọi T1, T2,…, Tn là các cây con tại r từ trái qua phải
của T,
° duyệt trung thứ tựï sẽ bắt đầu bằng việc duyệt T theo kiểu
1
trung thứ tựï,
° sau đó viếng thăm r,
° tiếp tục duyệt T theo kiểu trung thứ tự, tiếp tục duyệt T theo
2
3
kiểu trung thứ tự,… cho đến khi Tn được duyệt theo kiểu trung
thứ tự.
10/01/15
8.3. Các phương
9
Các thuật toán duyệt cây
•
Duyệt cây theo kiểu trung thứ tự
r
T1
Bước 2: thăm r
T2
Tn
Bước 1:
Bước 3:
Bước n + 1:
thăm T1
thăm T2
thăm Tn
kiểu trung thứ tự kiểu trung thứ tự kiểu trung thứ tự
10/01/15
8.3. Các phương
10
Các thuật toán duyệt cây
•
Ví dụ 3. Duyệt trung thứ tự sẽ viếng thăm các đỉnh của cây có gốc
và được sắp dưới đây theo thứ tự nào?
a
b
k
f
h i
l
j
n
d
g
e
10/01/15
c
o
m
p
8.3. Các phương
11
Các thuật toán duyệt cây
•
Ví dụ 3. (tiếp theo)
a
b
e
c
n
10/01/15
m
l
o
p
f
a
c
l
g
m
d
h i
f
a
c
l
g
m
d
h i
p
o
j
d h i
n
m
l
j
l
j
h i
k
a c g
f
k
g
f
b
e
d
j
e
n
k
e
k
b
n
o
p
o
p
b
8.3. Các phương
12
Các thuật toán duyệt cây
•
Thuật toán 2. Duyệt kiểu trung thứ tự
procedure inorder(T: cây có gốc và được sắp);
r := gốc của T
if r là lá then liệt kê r
else
begin
l := con đầu tiên từ trái sang phải của r
T(l) := cây con với gốc l
inorder(T(l))
liệt kê r
for mỗi cây con c của r từ trái sang phải trừ l
T(c) := cây con với gốc c
inorder(T(c))
end
10/01/15
8.3. Các phương
13
Các thuật toán duyệt cây
•
Đònh nghóa 3. Giả sử T là cây có gốc và được sắp thứ tự với gốc r.
– Nếu T chỉ có r thì r là cách duyệt hậu thứ tự của T;
– nếu không, thì gọi T1, T2,…, Tn là các cây con tại r từ trái qua phải
của T,
° duyệt hậu thứ tựï sẽ bắt đầu bằng việc duyệt T theo kiểu hậu
1
thứ tựï, tiếp tục duyệt T2 theo kiểu hậu thứ tự,,… cho đến khi
Tn được duyệt theo kiểu hậu thứ tự.
°
10/01/15
cuối cùng viếng thăm r.
8.3. Các phương
14
Các thuật toán duyệt cây
•
Duyệt cây theo kiểu hậu thứ tự
r
10/01/15
Bước n + 1: thăm r
T1
T2
Tn
Bước 1:
thăm T1
kiểu hậu thứ tự
Bước 2:
thăm T2
kiểu hậu thứ tự
Bước n:
thăm Tn
kiểu hậu thứ tự
8.3. Các phương
15
Các thuật toán duyệt cây
•
Ví dụ 4. Duyệt kiểu hậu thứ tự sẽ viếng thăm các đỉnh của cây có
gốc và được sắp dưới đây theo thứ tự nào?
a
b
k
f
h i
l
j
n
d
g
e
10/01/15
c
o
m
p
8.3. Các phương
16
Các thuật toán duyệt cây
•
Ví dụ 4. (tiếp theo)
c
b
d
f
g
e
k
o
h i
n
o
h
i
d a
i
d a
m
l
j
m
l
p
p
j
10/01/15
g
b c
k
f
j
n
e
a
j
k
n
o
n o
e f
b c l
m
g
h
p
p k
e f
b c l
8.3. Các phương
m
g
h
17
i
d a
Các thuật toán duyệt cây
•
Thuật toán 3. Duyệt kiểu hậu thứ tự
procedure postorder(T: cây có gốc và được sắp)
r := gốc của T
for mỗi cây con c của r từ trái sang phải
begin
T(c) := cây con với gốc c
postorder(T(c))
end
liệt kê r
10/01/15
8.3. Các phương
18
Các ký pháp trung tố, tiền tố và hậu tố
•
Biểu thức số học chứa các toán tử +, −, ∗, /, ↑ (luỹ thừa)
– Dùng dấu ngoặc để biểu thò thứ tự các phép toán.
– Biểu diển biểu thức bằng cây có gốc và được sắp:
° đỉnh trong biểu thò các phép toán,
° lá biểu thò các số hay các biến,
° mỗi phép toán tác động lên các cây con bên trái và bên
phải (theo thứ tự này).
10/01/15
8.3. Các phương
19
Các ký pháp trung tố, tiền tố và hậu tố
•
Ví dụ 5. Tìm cây có gốc biểu diễn biểu thức
((x + y) ↑ 2) + ((x − 4) / 3).
– Xây dựng cây nhò phân cho biểu thức trên từ dưới lên.
+
−
+
x
x
y
4
↑
↑
+
/
2
+
10/01/15
y
x
2
3
−
3
−
x
x
/
y
x
4
8.3. Các phương
20
4
Các ký pháp trung tố, tiền tố và hậu tố
– Nhận được dạng trung tố của biểu thức khi duyệt cây có gốc
theo kiểu trung thứ tự và dùng các dấu ngoặc mỗi khi gặp một
phép toán.
10/01/15
8.3. Các phương
21
Các ký pháp trung tố, tiền tố và hậu tố
•
+
+
/
+
+
x
x
+
y
x
(x + y) / (x + 3)
3
3
/
y
x
/
+
y
x
((x + (y/x)) + 3
x
x + (y/(x + 3))
Duyệt kiểu trung tố các cây nhò phân trên đều dẫn tới biểu
thức trung tố x + y / x + 3. Cần dùng ngoặc đơn trong cách
duyệt trung thứ tự mỗi khi gặp một phép toán!
10/01/15
8.3. Các phương
22
3
Các ký pháp trung tố, tiền tố và hậu tố
– Nhận được dạng tiền tố của biểu thức khi duyệt cây có gốc theo
kiểu tiền thứ tự.
– Biểu thức dưới dạng tiền tố được gọi là ký pháp Ba lan.
10/01/15
8.3. Các phương
23
Các ký pháp trung tố, tiền tố và hậu tố
•
Ví dụ 6. Dạng tiền tố của biểu thức ((x + y) ↑ 2) + ((x − 4) / 3)
– Duyệt cây nhò phân biểu diển biểu thức trên theo kiểu tiền thứ
tự
∀ ⇒ Dạng tiền tố: + ↑ + x y 2 / − x 4 3
10/01/15
8.3. Các phương
24
Các ký pháp trung tố, tiền tố và hậu tố
• Ví dụ 7. Tính giá trò của biểu thức tiền tố
∀+ − * 2 3 5 / ↑ 2 3 4
+ − * 2 3 5 / ↑ 2 3 4
2↑3=8
+ − * 2 3 5 / 8 4
8/4=2
+ − * 2 3 5 2
2*3=6
+ − 6 5 2
6−5=1
+ 1 2
1+2=3
10/01/15
8.3. Các phương
25