Các thuật toán duyệt cây• Duyệt cây theo kiểu tiền thứ tự... Duyệt kiểu tiền thứ tự • procedure preorderT: cây có gốc và được sắp... Các thuật toán duyệt cây• Duyệt cây theo kiểu trung t
Trang 18.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ộ
Trang 2Hệ đị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ì k v đỉnh con của nó từ
trái sang phải được gán các nhãn là A.1, A.2,…, A.k v
• 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…x n , trong đó đỉnh x i ở 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
Trang 3Hệ đị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 <
Trang 4Cá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,…, T n 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 T1 theo kiểu tiền thứ tự, sau đó duyệt T2 theo
kiểu tiền thứ tự,… cho đến khi T n được duyệt theo kiểu tiền thứ tự
Trang 5Các thuật toán duyệt cây
• Duyệt cây theo kiểu tiền thứ tự
Trang 6Cá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
d
g
i h m l
o
f
b e j
c
k
Trang 7Các thuật toán duyệt cây
• Ví dụ 2 (tiếp theo)
k
d
g
i h m l
c
o
e j
k
m l
d c
Trang 8Cá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)
Trang 9Cá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,…, T n 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 T1 theo kiểu trung thứ tựï,
° sau đó viếng thăm r,
° tiếp tục duyệt T2 theo kiểu trung thứ tự, tiếp tục duyệt T3
theo kiểu trung thứ tự,… cho đến khi T n được duyệt theo kiểu trung thứ tự
Trang 10Các thuật toán duyệt cây
• Duyệt cây theo kiểu trung thứ tự
Trang 11Cá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
d
g
i h m l
o
f
b e j
c
k
Trang 12Các thuật toán duyệt cây
• Ví dụ 3 (tiếp theo)
l
d
g
i h m l
o
f
b e
j
k
l o
e j
Trang 13Cá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))
Trang 14Cá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,…, T n 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 T1 theo kiểu hậu
thứ tựï, tiếp tục duyệt T2 theo kiểu hậu thứ tự,,… cho đến khi
T n được duyệt theo kiểu hậu thứ tự
° cuối cùng viếng thăm r.
Trang 15Các thuật toán duyệt cây
• Duyệt cây theo kiểu hậu thứ tự
Trang 16Cá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
d
g
i h m l
o
f
b e j
c
k
Trang 17Các thuật toán duyệt cây
• Ví dụ 4 (tiếp theo)
o
f
b e
a
o
e j
k
m l
Trang 18Cá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
Trang 19Cá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)
Trang 20Cá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
/ 3
2 +
/ 3
+
Trang 21Cá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
Trang 22Các ký pháp trung tố, tiền tố và hậu tố
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!
Trang 23Cá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.
Trang 24Cá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 x
Trang 25Cá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 5 = 8
* 2 3 5 8
8 = 2
* 2 3 5 * = 6
6 5 2
6 5 = 1
1 2
1 + 2 = 3
Trang 26Các ký pháp trung tố, tiền tố và hậu tố
– Nhận được dạng hậu tố của một biểu thức bằng cách duyệt cây
nhị phân theo kiểu hậu thứ tự
– Biểu thức dưới dạng hậu tố được gọi là ký pháp Ba lan ngược.
Trang 27Các ký pháp trung tố, tiền tố và hậu tố
• Ví dụ 8 Dạng hậu 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 hậu thứ tự
Dạng hậu tố: x y x
Trang 28Các ký pháp trung tố, tiền tố và hậu tố
• Ví dụ 9 Tìm giá trị của biểu thức hậu tố
Trang 29Các ký pháp trung tố, tiền tố và hậu tố
• Ví dụ 10 Cây có gốc và được sắp biểu diễn mệnh đề logic phức
Trang 30Các ký pháp trung tố, tiền tố và hậu tố
– Dạng tiền tố
p q p q– Dạng hậu tố