Tải bản đầy đủ (.docx) (32 trang)

TIỂU LUẬN Cấu trúc dữ liệu và giải thuật ĐẾ TÀI : Nghiên cứu và cài đặt chương trình thực hiện duyệt cây nhị phân, cây tổng quát và rừng theo ba phương pháp ( các cây được lưu trữ móc nối trong máy )

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (361.53 KB, 32 trang )

***TRƯỜNG ĐẠI HỌC KINH TẾ QUỐC DÂN***
VIỆN CÔNG NGHỆ THÔNG TIN KINH TẾ

TIỂU LUẬN MÔN HỌC:
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

ĐẾ TÀI : Nghiên cứu và cài đặt chương trình thực hiện duyệt cây nhị
phân, cây tổng quát và rừng theo ba phương pháp ( các cây được lưu trữ
móc nối trong máy )

Giảng viên hướng dẫn: ThS. Lưu Minh Tuấn
Lớp tín chỉ: Cấu trúc Dữ liệu và Giải thuật (215)_2

****** HÀ NỘI, THÁNG 5-2016******


DANH SÁCH THÀNH VIÊN TRONG NHÓM
1.
2.
3.
4.

BÙI BÍCH NGỌC. MSV 11146153
LƯU THỊ MINH NGỌC.MSV 11143142
NGUYỄN THỊ HỢI.MSV 11141638
PHẠM MINH HẢI.MSV 11141171

MỤC LỤC
- Lời nói đầu



- Chương I: Giới thiệu phát biểu đề tài
- Chương II: Nội dung về đề tài nghiên cứu
PHẦN 1: Tổng quan lý thuyết
I.
cấu trúc cây:
1.định nghĩa , khái niệm:
2.các khái niệm trên cây:
II. các dạng cây thường gặp
1. cây nhị phân
1.1. ĐN, phân loại , tính chất
1.2. Biểu diễn cây nhị phân trong máy tính
1.2.1. Lưu trữ kế tiếp đối với cây nhị phân
1.2.2. Lưu trữ móc nối đối với cây nhị phân
2. Cây tổng quát, rừng
Biểu diễn cây tổng quát bằng cây nhị phân tương đương
III. Các phương pháp duyệt cây
1. Định nghĩa
2. Các phương pháp duyệt cây
2.1. Duyệt cây nhị phân theo 3 phương pháp
2.2.1. Duyệt theo thứ tự trước(TTT)
2.2.2. duyệt theo thứ tự giữa(TTG)
2.2.3. duyệt theo thứ tự sau(TTS)
2.2. Duyệt cây tổng quát, rừng theo 3 phương pháp
2.2.1. Duyệt cây tổng quát
2.2.2. Duyệt rừng
PHẦN 2:Cài đặt thử nghiệm chương trình
- Chương III: dánh giá kết quả nghiên cứu và kết luận
- Các tài liệu tham khảo.

LỜI NÓI ĐẦU

So với tất cả các ngành nghề và các lĩnh vực thì có thể nói công nghệ
thông tin là một ngành động, nó luôn luôn phát triển với tốc độ nhanh chóng và
ngày càng khẳng định vai trò quan trọng của mình trong việc đáp ứng nhu cầu


học tập, làm việc và giải trí ngày càng cao của con người. Khi công nghệ phát
triển đến một trình độ nhất định thì nhu cầu về vấn đề bảo mật giữ liệu được đặt
ra và đề giải quyết vấn đề đó thì lý thuyết về cây được áp dụng và giữ vai trò
quan trọng trong việc mã hóa dữ liệu, tổ chức dữ liệu trong máy tính hoạt động
nhanh và hiệu quả hơn.
Trong khoa học máy tính, cây là một cấu trúc dữ liệu được sử dụng rộng
rãi goomg một tập hợp các nút được liên kết với nhau theo quan hệ cha con.
Cây trong cấu trúc dữ liệu đầu tiên là mô phỏng (hay nói cách khác là sự sao
chép ) của cây ( có gốc ) trong lý thuyết đồ thị. Hầu như mọi khái niệm trong
cây của lý thuyết đồ thị đều được thể hiện trong cấu trúc dữ liệu. Tuy nhiên cây
trong cấu trúc dữ liệu đã tìm được ứng dụng phong phú và hiệu quả trong nhiều
giải thuật. Khi phân tích các giải thuật trên cấu trúc dữ liệu cây, người ta vẫn
thường vẽ ra các cây tương ứng trong lý thuyết đồ thị.
Trong bài tiểu luận này chúng em xin trình bày về : khái quát về cây nhị
phân, cây tổng quát, rừng; các thuật toán cơ bản, code cài đặt các thuật toán cơ
bản vê cây nhị phân, cây tổng quát và rừng.
Em xin chân thành cảm ơn thầy Lưu Minh Tuấn đã nhiệt tình hướng dẫn và
đào tạo điều kiện cho chúng em hiểu biết nhiều thêm. Dù đã cố gắng hết sức
nhưng bài của chúng em vẫn còn nhiều sai sót rất ong nhận được góp ý từ thầy ạ
để bài làm có thể được hoàn thiện hơn . Em cảm ơn thầy ạ.

CHƯƠNG I: GIỚI THIỆU PHÁT BIỂU ĐỀ TÀI
1 ĐỀ TÀI
Nghiên cứu và cài đặt chương trình thực hiện duyệt cây nhị phân, cây tổng quát
và rừng theo ba phương pháp ( các cây được lưu trữ móc nối trong máy ).



 NỘI DUNG
Trình bày lý thuyết liên quan đến đề tài. CTDL & GT sử dụng để cài đặt
Cây nhị phân được lưu trữ bằng phương pháp móc nối
Cây tổng quát được biểu diễn bằng cây nhị phân tương đương và được lưu trữ
bằng phương pháp móc nối
Duyệt cây nhị phân theo ba phương pháp
Duyệt cây tổng quát theo ba phương pháp. Duyệt rừng theo ba phương pháp
Kết quả cần đưa ra danh sách các nút duyệt theo từng phương pháp trên mỗi cây
(rừng)

2 PHẠM VI
Bài viết này chung ta sẽ nghiên cứu trong phạm vi kiến thức liên quan đến cây
nhị phân, cây tổng quát và rừng:thong tin, cách duyệt cây nhị phân, cây tổng
quát, rừng theo ba phương pháp và biết cách cài đặt chương trình duyệt cây.
3 ĐỐI TƯỢNG
Bài viết này hướng đến những người muốn tìm hiểu về môn Cấu trúc dữ liệu và
giải thuật nói chung, duyệt cây nhị phân, cây tổng quát và rừng theo ba phương
pháp nói riêng.
4 MỤC ĐÍCH CỦA VIỆC NGHIÊN CỨU
Cùng với sự phát triển của khoa học kỹ thuật, công nghệ thông tin nói chung và
bộ môn cấu trúc dữ liệu và giải thuật nói riêng ngày càng được ứng dụng rộng
rãi trong nhiều lĩnh vực. Với một cơ sở dữ liệu khổng lồ, việc đưa ra một
phương pháp nhằm giải quyết vấn đề tìm kiếm dữ liệu có hiệu quả và nhanh
nhất luôn được sự qua tâm của các nhà phát triển phần mềm. Thông thường dữ
liệu được biểu diễn dưới dạng danh sách lien kết. Việc truy cập dữ liệu chưa đạt
hiệu quả cao. Sử dụng cấu trúc dữ liệu dạng cây là một giải pháp làm tăng hiệu
suất trong các thao tác sử lý. Chính vì vậy mục đích của việc nghiên cứu về cây
và các phương pháp duyệt cây sẽ giúp cho mọi người lưu trữ thong tin một cách

nhanh và logic hơn, ngoài ra còn giúp các bạn thao tác xử lý nhanh tìm kiếm dễ
dàng hơn những thong tin cần thiết trong kho dữ liệu của mình.


CHƯƠNG II: NỘI DUNG ĐỀ TÀI NGHIÊN CỨU
PHẦN 1: TỔNG QUAN LÍ THUYẾT
I-Cấu trúc cây
1-Định nghĩa
1.1-Một số ví dụ về cây :
• Mục lục một quyển sách
• Cấu trúc một trang web
• Sơ đồ tổ chức công ty


• Cấu trúc một thư viện
+)Sơ đồ cấu trúc mục lục một quyển sách:
Mục lục

C1

C2

2.1

2.2

C33

2.3


3.1

3.2

+) Sơ đồ cấu trúc một trang web :
Trang
chủ

Giới thiệu

Tổng
Trang
công ty
web
1.2-Một số định nghĩa về cây

Tin tức

Nội bộ

Liên kết

Văn
hóa

Xã hội

Chính
trị


Định nghĩa 1: Một cây là tập hợp hữu hạn các nút trong đó có một nút đặc biệt
gọi là gốc (root). Giữa các nút có một quan hệ phân cấp gọi là "quan hệ cha
con".
Định nghĩa đệ quỵ:
-Mỗi nút là một cây


- n là nút và n1, n2,....., nk là gốc của các cây C1,C2.....,Ck; (không có nút
chung).
-n là cha của các nút n1,n2,....,nk thì có một cây mới C.
2-Một số khái niệm cơ bản:
• Bậc của một nút: là số cây con của nút đó .
• Bậc của một cây: là bậc lớn nhất của các nút trong cây (số cây con tối đa
của một nút thuộc cây). Cây có bậc n thì gọi là cây n-phân.
• Nút gốc: là nút không có nút cha.
• Nút lá: là nút có bậc bằng 0 .
• Nút nhánh: là nút có bậc khác 0 và không phải là gốc .
• Mức của một nút:
Mức (gốc (T) ) = 0.
Gọi T1, T2, T3, ... , Tn là các cây con của T0
Mức (T1) = Mức (T2) = ... = Mức (Tn) = Mức (T0) + 1.
Độ dài đường đi từ gốc đến nút x: là số nhánh cần đi qua kể từ gốc đến x.
Độ dài của đường đi: là số nút trên đường đi -1.
Độ dài đường đi tổng của cây :
Trong đó Px là độ dài đường đi từ gốc đến X.
Độ dài đường đi trung bình : PI = PT/n (n là số nút trên cây T).

Ví dụ:

T1


T3

T2

T5

T4

T11

T12

T13

T10

T9

T8

T7

T6

T14

T15

T16



- Bậc của một nút: nút T2 trên có bậc bằng 2
- Bậc của một cây: cây trên có bậc bằng 3 và cây trên được gọi là
cây 3-phân.
- Nút gốc của cây trên là T1
-Nút lá của cây trên: T5,T6,T10,T11,T12,T13,T14,T15,T16
-Trong cây trên T4 là nút cha của nút T9,T10 ngược lại T9,T10 là
nút con của T4
- Mức của các nút trong cây trên:
Mức của các nút T5,T6,T7,T8,T9,T10 bằng 3
Mức của các nút T11,T12,T13,T14,T15,T16 bằng 4
Chiều dài đường đi tới nút T3 là 2
• Rừng cây: là tập hợp nhiều cây trong đó thứ tự các cây là quan
trọng.Một cây khác rỗng khi mất gốc sẽ trở thành một rừng.

Ví dụ: Rừng gồm 3 cây:
Z
G

A

C

B

E

F


H

J

K


• Cây có thứ tự:
Trong một cây, nếu các cây con của mỗi đỉnh được sắp theo một thứ nhất định,
thì cây được gọi là cây được sắp (cây có thứ tự). Hình dưới đây minh hoạ hai
cây được sắp khác nhau.
A

A

B

C

C

II. Các dạng cây thường gặp
1. Cây nhị phân( binary tree)
1.1. Định nghĩa, phân loại, tính chất
Ví dụ:
A

B

D


C

E

B


(*) Định nghĩa:
Cây nhị phân là cây mà mọi nút trên cây nếu có thì chỉ có tối đa là 2 con
Cây nhị phân là cây có thứ tự, ta phân biệt là cây cây con trái và cây con
phải của 1 nút
(*) Phân loại cây nhị phân
• Cây nhị phân lệch trái
A

B

C

• Cây nhị phân lệch phải
A

B

C
• Cây nhị phân zic-zăc
A

B


Hoặc

A

B


C
C
• Cây nhị phân hoàn chỉnh: là cây nhị phân mà số nút đều đạt tối đa ở mọi
mức trừ mức mức cuối cùng
A

B

C

D
E
F
• Cây nhị phân đầy đủ: là cây nhị phân mà số nút đều đạt tối đa ở mọi mức(
kể cả mức cuối cùng)
A

B

D

C


E

F

G

(*) Tính chất:
- Số nút tối đa ở 1 mức i trên cây nhị phân là : ( i>=1)
-Số nút tối đa trên cây nhị phân có chiều cao h là: -1 (h>=1)
1.2. Biểu diễn cây nhị phân trong máy tính
1.2.1. Lưu trữ kế tiếp đối với cây nhị phân


* Phương pháp: Ta có thể sử dụng một vecto V có n phần tử để lưu trữ cây nhị
phân đầy đủ có n nút ( giả sử mỗi nút của cây được lưu trữ hết 1 phần tử của
vecto V) theo nguyên tắc như sau:
- Đánh số thứ tự cho các nút của cây từ 1,2 ,….,n bằng cách xuất phát từ nút gốc
theo nguyên tắc từ trên xuống, từ phảitrái. Hết mức này đến mức khác
 lưu ý: Nếu nút cha có chỉ số là i thì 2 nút con chỉ số là 2i và 2i+1
Ngược lại nếu biết chỉ số nút con là j thì ta xác định được chỉ số của nút cha là
số nguyên dưới của j/2 ( j div 2)
-Phần tử Vi của vecto V sẽ lưu trữ nút có số thứ tự (chỉ số) i tương ứng
(*) Ví dụ 1: thực hiện lưu trữ kế tiếp cây nhị phân sau:

A

B

C


D

E

V[1]
A

V[2]
B

F

G

V[3] V[4]

V[5]

C

E

D

V[6]
F

V[7]
G


1.2.2. Lưu trữ móc nối đối với cây nhị phân
Ta có thể lưu trữ cây nhị phân bằng danh sách móc nối cấu trúc của 1 nút
như sau:
Trotrai

Dulieu

Trophai


Trong đó:
+ Dulieu: lưu trữ thong tin của nút
+ Trotrai, Trophai: là các trường con trỏ tương ứng trỏ tới nút gốc của cây con
trái và cây con phải của nút
Hình ảnh lưu trữ giống với hình dáng tự nhiên của cây
* ví dụ 2: Biểu diễn cây nhị phân ở ví dụ 1 trên theo phương pháp móc
nối:

A
B

Gg

D

CC

E


F

G

2. Cây tổng quát, rừng:
2.1.Biểu diễn ( lưu trữ) cây tổng quát bằng cây nhị phân
tương đương (NPTĐ)
(*) Phương pháp: Để lưu trữ cây tổng quát bằng cây nhị phân tương
đương ta coi mọi nút trên cây tổng quát nếu có thì chỉ có 2 đặc điểm:
+ Nút con cả ( cực trái)
+ Nút em kế cận phải
 Lúc đó cây nhị phân biểu diễn cây tổng quát này mà ta gọi là cây nhị
phân tương đương được xác định như sau:
+ Nút gốc cây NPTĐ là nút gốc của cây tổng quát T;
+ Nút con trái của 1 nút trên cây NPTĐ là nút con cả của nút
đó trên cây tổng quát
+ Nút con phải của 1 nút trên cây NPTĐ là nút em kế cận
phải của nút đó trên cây tổng quát


(*) Ví dụ:
A

C

B
E

F


G

D

I

H

K
Xét nút A= + con cả : B
+em kế cận phải: Ф

M

Nút C= + con cả: G
+ em kế cận phải: D
Nút M= + con cả:Ф
+ em kế cận phải:Ф

*Về cấu trúc lưu trữ: cây NPTĐ được tổ chức gồm các nút, mỗi nút có
quy cách như sau:
Conca

Dulieu

Emkecan

+ Dulieu: biểu diễn thông tin của nút
+ Conca, Emkecan: là các trường con trỏ tương ứng trỏ tới nút con cả
và nút em kế cận phải của nút đó trên cây tổng quát

 Cây này được lưu trữ móc nối trong máy. Nút gốc trỏ bởi con trỏ T.
2.2. Biểu diễn rừng T bằng cây nhị phân tương đương:
Rừng T gồm các cây T1,T2,T3…..,Tk được biểu diễn bằng cây NPTĐ
theo phương pháp giống với cây tổng quát chỉ khác ở các điểm sau:
+ Coi nút gốc của T2 là nút em kế cận phải của cây T1,….
+ Nút gốc của cây NPTĐ là nút gốc của cây T1
+ Các nút thuộc cây con trái của cây NPTĐ là các nút thuộc T1


Các nút thuộc cây con phải của cây NPTĐ là các nút thuộc các cây
còn lại T2,…,Tk.

II.

Các phương pháp duyệt cây
1-Định nghĩa
Duyệt một cây là một trình tự làm việc với các nút trong cây,trình
tự này giống như một chuyến đi qua các nút trên cây theo kiểu liên kết
cha- con .Các giải thuật khác nhau về thứ tự viếng thăm giữa một nút
cha và các nút con.

2.các phương pháp duyệt cây
2.1. Đối với cây nhị phân
2.1.1. Duyệt theo thứ tự trước (TTT)
 Ý tưởng:
- Thăm gốc T
- Duyệt toàn bộ cây con trái theo TTT
- Duyệt toàn bộ cây con phải theo TTT
 Giải thuật:
Procedure Duyet_TTT(T);

If T= Null then
Begin
Write (“Cay rong”);
Return;
End;
Else
Begin
Write (“dulieu(T)”);
Call Duyet_TTT(trotrai(T));


Call Duyet_TTT(trophai(T));
End;
Return;

2.1.2. Duyệt theo thứ tự giữa (TTG)
 Ý tưởng:
- Duyệt toàn bộ cây con trái theo TTG;
- Thăm gốc T
- Duyệt toàn bộ cây con phải theo TTG
 Giải thuật:
Procedure Duyet_TTG(T);
If T=null then
Begin
Write (“cay rong”);
Return;
End;
Else
Begin
Call Duyet_TTG(trotrai(T));

Write (“dulieu(T));
Call Duyet_TTG(trophai(T));
End;
Return;
2.1.3. Duyệt theo thứ tự sau (TTS):
 Ý tưởng:
- Duyệt toàn bộ cây con trái theo TTS
- Duyệt toàn bộ cây con phải theo TTS
- Thăm gốc T
 Giải thuật:
Procedure Duyet_TTS(T);
If T=null then
Begin


Write(“cay rong”);
Return;
End;
Else
Begin
Call Duyet_TTS( trotrai(T));
Call Duyet_TTS( trophai(T));
Write(dulieu(T));
End;
Return;
 Ví dụ: duyệt cây nhị phân sau theo 3 phương pháp:
A

B


D

C

E

G

F

H

I
- Duyệt theo TTT: A,B,D,E,G,I,H,C,F
- Duyệt theo TTG: D,B,I,G,E,H,A,C,F
- Duyệt theo TTS: D,I,G,H,E,B,F,C,A

2.2.Duyệt cây tổng quát, rừng theo 3 phương pháp
2.2.1. Duyệt cây tổng quát


Phép duyệt cây tổng quát cũng được đặt ra tương tự như đối với cây nhị phân.
Tuy nhiên có một số điều cần phải xem xét thêm khi định nghĩa phép duyệt, đó
là:
- Sự nhất quán về thứ tự các nút được thăm giữa phép duyệt cây tổng quát và
phép duyệt cây nhị phân tương đương của nó
- Sự nhất quán giữa định nghĩa phép định nghĩa phép duyệt cây tổng quát với
định nghĩa phép duyệt cây nhị phân. Vì cây nhị phân cũng có thể coi là cây tổng
quát và ta có thể áp dụng định nghĩa phép duyệt cây tổng quát cho cây nhị phân.
Ta có thể xây dựng được định nghĩa của phép duyệt cây tổng quát T như sau

 Duyệt theo thứ tự trước
a) Nếu T rỗng thì không làm gì
b) Nếu T khác rỗng thì
Thăm gốc của T
Duyệtcác cây con thứ nhất T1 của gốc của cây T theo thứ tự trước
Duyệt các cây con còn lại T2, T3,...,Tn của gốc T theo thứ tự trước
 Duyệt theo thứ tự giữa
a) Nếu T rỗng thì không làm gì
b) Nếu T khác rỗng thì
Duyệtcác cây con thứ nhất T1 của gốc của cây T theo thứ tự giữa
Thăm gốc của T
Duyệt các cây con còn lại T2, T3,...,Tn của gốc T theo thứ tự giữa
 Duyệt theo thứ tự sau
a) Nếu T rỗng thì không làm gì
b) Nếu T khác rỗng thì
Duyệtcác cây con thứ nhất T1 của gốc của cây T theo thứ tự sau
Duyệt các cây con còn lại T2, T3,...,Tn của gốc T theo thứ tự sau


Thăm gốc của T
Ví dụ:

A

B

E

E


D

C

F

E

G

J

Thứ tự trước: A B C E H I F J D G
Thứ tự giữa : B A h E I C J F G D
Thứ tự sau : B H I E J F C G D A

2.2.2.Duyệt rừng
Có thể duyệt rừng T gồm các cây T1,T2,…,Tk giống như cây tổng quát bằng
cách: trước hết biến đổi rừng thành cây tổng quát như sau: đưa thêm vào 1 nút
“gốc giả”( không chứa dữ liệu) và cho nó trở thành nút cha của các gốc của các
cây T1,… Tk tương ứng.

** Ví dụ


Duyệt rừng Sau theo 3 phương pháp:
1

A


B

C

D

2

X

3
X

E1

LÀM:
Biến đổi rừng trên thành cây tổng quát bằng cách đưa thêm 1 nút “gốc giả”(Ф)
trở thành nút cha của các nút gốc A,1,X
Ta được kết quả
- Duyệt theo TTT: Ф,A,B,E,C,D,1,2,3,X
- Duyệt theo TTG: B,A,C,E,D,Ф,2,1,3,X
- Duyệt theo TTS: B,E,C,D,A,2,3,1,X,Ф

PHẦN 2: CÀI ĐẶT CHƯƠNG TRÌNH


1.DUYỆT CÂY NHỊ PHÂN THEO 3 PHƯƠNG PHÁP
program DuyetCayNP;
type MyArray=array[1..1000] of integer;
type typeKey=integer;

type nodeTree=^node;
node=record
key:typeKey;
left, right:nodeTree;
end;
type Tree=nodeTree;
var T:nodeTree;
a:MyArray;
n,i:integer;
function TaoNode(key:typeKey):nodeTree;
var p:nodeTree;
begin
new(p);
p^.key:=key;
p^.left:=nil;
p^.right:=nil;
TaoNode:=p;
end;
procedure TaoCayRong(var T:Tree);
begin
T:=nil
end;
procedure NhapCayNP(var T:Tree; a:MyArray; n:integer);
var key, keyLeft, keyRight:typeKey;
begin
if (T=nil) then
begin
new(T);
write('Nhap vao goc ');
readln(key);

T^.key:=key;
end;
new(T^.left);


new(T^.right);
write('Nhap con trai cua ',T^.key,':');
readln(keyLeft);
T^.left^.key:=keyLeft;
write('Nhap con phai cua ',T^.key,':');
readln(keyRight);
T^.right^.key:=keyRight;
if (T^.left^.key <>0) then NhapCayNP(T^.left)
else T^.left:=nil;
if (T^.right^.key <>0) then NhapCayNP(T^.right)
else T^.right:=nil;
end;
procedure ChuyenSangMang(T:nodeTree; a:MyArray; var n:integer);
begin
if (T<>nil) then
begin
inc(n);
a[n]:=T^key;
ChuyenSangMang(T^.left,a,n);
ChuyenSangMang(T^.right,a,n);
end;
end;
procedure DuyetTruoc(T:nodeTree);
begin
if T=nil then write('Cay Rong') else

begin
write(T^.key:5);
DuyetTruoc(T^.left);
DuyetTruoc(T^.right);
end;
end;
procedure DuyetGiua(T:nodeTree);
begin
if T=nil then write('Cay Rong') else
begin
DuyetGiua(T^.left);
write(T^.key:5);


DuyetGiua(T^.right);
end;
end;
procedure DuyetSau(T:nodeTree);
begin
if T=nil then write('Cay Rong');
else
begin
DuyetSau(T^.left);
DuyetSau(T^.right);
write(T^.key:5);
end;
end;
BEGIN
TaoCayRong(T);
NhapCayNP(T);

ChuyenSangMang(T,n,a);
DuyetTruoc(T);
DuyetGiua(T);
DuyetSau(T);
end.

2.DUYỆT CÂY TỔNG QUÁT THEO 3 PHƯƠNG PHÁP


program DuyetCayTQ;
uses crt;
const n=12;
type item=char;
pointer=^node;
node=record
info:item;
numChild:integer;
child:array[1..n] of pointer;
end;
var
T:pointer;
procedure inputTree(var T:pointer);
var
i:integer;
p:pointer;
begin
if T=nil then
begin
new(T);
write('Nhap nut goc ');

readln(T^.info);
end;
p:=T;
write('Nhap so con cua node ',p^.info,':');
readln(p^.numChild);
for i:=1 to p^.numChild do
begin
new(p^.child[i]);
write('Nhap nut con thu ',i,':');
readln(p^.child[i]^.info);
end;
for i:=1 to p^.numChild do
inputTree(p^.child[i]);
end;
procedure DuyetTruoc(T:pointer);
var i:integer;


×