1 [Hướng dẫn]Làm việc với cây nhị phân theo kiểu đi thi đạt điểm Tue Jun 28, 2011 8:42 pm
Admin
Quản trị viên
Có 2 cách hiểu chính về cây nhị phân tuỳ thuộc vào tính chất của dữ liệu.
1) Về trực quan: Cây là đồ thị liên thông, không chu trình. Ngoài ra có một nút đặc biệt chọn ra phụ thuộc vào bài toán cụ thể: Gốc. Trình tự từ gốc vô cùng quan trọng. Trình tự từ đỉnh đặc biệt này đến các đỉnh khác cho ta biết về cấp 0, chiều cao 0, nút 0. Đối với các đỉnh khác tính tới gốc có các giá trị 1, 2... ngoài ra còn có lá (không có nút con) hay các nút trong giúp hình dung cây dễ dàng hơn.
2) Về toán học: Cây dược định nghĩa theo kiểu đệ quy, một nút con là một cây dùng theo dạng đệ quy có nút con, nút cha lúc này thứ tự đặt vấn đề sẽ khác với thứ tự ở 1) → chỉ ra cay có thứ tự rõ ràng, cha trước, con sau. Trong phạm vi nghiên cứu cây đối với đề thi thì cây hị phân không quá 2 nút con, đối với mỗi nút. Ngầm định khi làm việc với cây nhị phân sẽ là trái trước, phải sau. Trái bé, phải to. Nếu khong theo ngầm định phải tuyên bố rằng, bài thi của tôi sẽ coi như là... để người chấm biết. Nếu không tuyên bố mà không làm theo ngầm định, coi như làm sai và không được điểm.
Về biểu diễn cây thường sử dụng danh sách liên kết là chủ yếu. Thông thường biểu diễn cây qua cấu trúc dữ liệu sau, cấu trúc này sử dụng cho các bài tập và bài thi đó nha, Admin cần chú ý mà nắm cho rõ đừng cố tình nhầm lẫn:
List = Cây
Cây = Record;
d: Data;
L, R: List;
end.
Bài tập ứng dụng cây trong đề thi mật độ lớn. Thường là câu 2 trong đề thi.
Có 3 dạng bài tập trong đề thi đối với cây gồm:
1) Duyệt cây: Giống như duyệt đồ thị, có thể đem thuật toán duyệt đồ thị sang duyệt cây, nhưng phải chuyển đổi cho phù hợp với dạng dữ liệu. Thường đề thi yêu cầu duyệt cây thì Output các đỉnh ra theo đúng thứ tự cây.
2) Sử dụng cây phục vụ bài toán tìm kiếm
3) Sử dụng cây để mã hoá dữ liệu ở 2 mức đơn giản: Mã tiền tố và mã Huffman.
Ta làm một vài câu súc miệng để biết cách thức làm nó trong đề thi.
1. Bài toán duyệt cây nhị phân:
Về nguyên tắc:
- Cần đặt tên của nút vừa là tên nút, vừa là giá trị mang để tránh ghi nhiều tên gây rối thuật toán.
- Đề yêu cầu duyệt cây, thì phải viết ra được cây (Các nút của nó)
Một cây đơn giản như thế này
[You must be registered and logged in to see this image.] | Có 3 phương pháp duyệt: Tiền, trung và hậu a) Duyệt tiền: Thứ tự u → P → x b) Duyệt trung: Thứ tự P → u → x c) Duyệt hậu: Thứ tự P → x → u |
- Viết thủ tục duyệt tiền thứ thự đối với một cây T cho trước:
[You must be registered and logged in to see this image.] Proc Tiền_TT(T: List)
IF (T ≠ NIL)
a) Output (T^.d)
b) Tiền_TT (T^.L)
c) Tiền_TT (T^.R)
Con số cạnh mỗi nút trên hình là con số thứ tự duyệt.
- Viết thủ tục duyệt trung thứ thự đối với một cây T cho trước:
[You must be registered and logged in to see this image.] Proc Trung_TT(T: List)
IF (T ≠ NIL)
a) Trung_TT (T^.L)
b) Output (T^.d)
c) Trung_TT (T^.R)
Con số cạnh mỗi nút trên hình là con số thứ tự duyệt.
- Viết thủ tục duyệt hậu thứ thự đối với một cây T cho trước:
[You must be registered and logged in to see this image.] Proc Hậu_TT(T: List)
IF (T ≠ NIL)
a) Hậu_TT (T^.L)
b) Hậu_TT (T^.R)
c) Output (T^.d)
Con số cạnh mỗi nút trên hình là con số thứ tự duyệt.
Được sửa bởi Admin ngày Sat Jul 23, 2011 4:21 am; sửa lần 1.