Lecture 12. Trees (1/2) Nội dung bài học:

Similar documents
Chương 5. Network Layer 19/09/2016 1

Chương 5. Network Layer. Phần 1 - Địa chỉ IPv4. Tài liệu : Forouzan, Data Communication and Networking

CẤU TRÚC DỮ LIỆU NÂNG CAO

Bộ môn MMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

Khoa KH & KTMT Bộ môn Kỹ Thuật Máy Tính

STACK và QUEUE. Lấy STACK

TÀI LIỆU THỰC HÀNH MÔN CƠ SỞ DỮ LIỆU NÂNG CAO

Nội dung chính của chương. Các công nghệ đĩa cứng Cấu tạo vật lý của đĩa cứng Cấu tạo logic của đĩa cứng Cài đặt đĩa cứng như thế nào?

Tài liệu hướng dẫn: Stored Procedure

Cài đặt và cấu hình StarWind iscsi trên Windows. iscsi SAN là gì?

TỔNG QUAN VỀ.NET VÀ C#

Internet Protocol. Bởi: Phạm Nguyễn Bảo Nguyên

HƯỚNG DẪN SỬ DỤNG PLESK PANEL

ĐỌC, GHI XML VỚI C# TRONG ADO.NET --- SỬ DỤNG VISUAL STUDIO

Online Appointment System will work better with below conditions/ Hệ thống đặt hẹn online sẽ hoạt động tốt hơn với điều kiện sau đây:

BELGIUM ONLINE APPOINTMENT

Mô hình dữ liệu quan hệ (Relational data model)

Bài 10: Cấu trúc dữ liệu

Tình huống 1: PPPoE với Username và Password

Tạo repository mới. The working tree. The staging index. Lệnh git init tạo một repository loại git. tại thư mục hiện tại: $ git init

BÀI 1: VBA LÀ GÌ? TẠO MACRO, ỨNG DỤNG CÁC HÀM TỰ TẠO (UDF), CÀI ĐẶT ADD-INS VBA là gì?

Môn Học: Cơ Sở Dữ Liệu 2. Chương 3 LẤY DỮ LIỆU TỪ NHIỀU NGUỒN

Cụ thể những công việc mà AndroidManifest.xml thực hiện: - Đặt tên cho Java package của ứng dụng.

HƯỚNG DẪN SỬ DỤNG HỆ THỐNG CẬP NHẬT CHỨNG THƯ SỐ HOTLINE:

NHẬP MÔN LẬP TRÌNH KHOA HỌC DỮ LIỆU. Bài 10: Thư viện Pandas (2)

Giáo trình này được biên dịch theo sách hướng dẫn của Sun Light. Vì là hướng dẫn kỹ thuật, trong này những thuật ngữ kỹ thuật bằng tiếng Anh tôi chỉ

B5: Time to coding. Tới thư mục src/example.java và thay đổi nội dung file như sau: Mã: package at.exam;

Kỹ thuật thu nhỏ đối tượng trong Design (Layout)

Chương 6. Transport Layer. Tài liệu : Forouzan, Data Communication and Networking

HƯỚNG DẪN CÀI ĐẶT PHẦN MỀM DIỆT VIRUS AVIRA

GIẢI THUẬT ĐỊNH TUYẾN (ROUTING ALGORITHM)

Entity Framework (EF)

CHƯƠNG 2: CÁC ĐẶC ĐIỂM VỀ MÔI TRƯỜNG PHÁT TRIỂN (IDE)

I. Hướng Dẫn Đăng Nhập:

Bài Thực hành Asp.Net - Buổi 1 - Trang: 1

BÀI TẬP THỰC HÀNH LẬP TRÌNH WINDOWS C#

Khối: Cao Đẳng nghề và Trung Cấp Năm 2009

Đa ngôn ngữ (Internationalization) trong Servlet

BÀI 6 LÀM VIỆC VỚI THÀNH PHẦN MỞ RỘNG CỦA CSS3

LẬP TRÌNH 8051 SỐ HỌC VÀ LÔ GIC

PHÁT TRIỂN ỨNG DỤNG WEB

HƯỚNG DẪN SỬ DỤNG ĐẦU GHI H.264 DVR VISION VS (4CH - 8CH - 16CH)

BÀI GIẢNG CHƯƠNG 3 GIAO TIẾP KẾT NỐI SỐ LIỆU

Bài 13: C++11. EE3490: Kỹ thuật lập trình HK1 2017/2018 TS. Đào Trung Kiên ĐH Bách khoa Hà Nội

B3: Bên khung Package Explore bên trái đi tới thư mục res, bạn sẽ thấy có 3 thư mục con:

Chương 7. Application Layer. Tài liệu : Forouzan, Data Communication and Networking

Bài 10. Cấu trúc liên nối. khác nhau được gọi là cấu trúc liên nối. nhu cầu trao đổi giữa các module.

TÀI LIỆU HƯỚNG DẪN SỬ DỤNG HOSTING PLESK PANEL

HƯỚNG DẪN CÁCH SỬ DỤNG WINDOWS MOVIE MAKER

Hướng dẫn cài đặt FPT

LÂ P TRI NH WEB ASP.NET

Bài tập lớn số 1. Giả lập bộ định thời

Google Search Engine. 12/24/2014 Google Search Engine 1

2.4. GIAO THỨC MQTT Các khái niệm cơ bản MQTT được phát triển bởi IBM và Eurotech, phiên bản mới nhất là MQTT 3.1 MQTT (Giao vận tầm xa) là

Tạo Project với MPLAB

MỤC LỤC. Giáo trình Thiết kế web Trang 1

SIEMENS INDUSTRIAL NETWORKS

SIMULATE AND CONTROL ROBOT

1 Bước 1: Test thử kit LaunchPad.

Mạng máy tính - Computer Network: Hệ. Giao thức - Protocol:

Bài tập căn bản Visual Basic.Net Vòng lặp. txtn. txtketqua. btntinh. txtn. txtketqua. btntinh. Trang 1

CÁC KIỂU DỮ LIỆU TRỪU TƯỢNG CƠ BẢN CẤU TRÚC DỮ LIỆU CÂY

Cập nhật ResultSet trong JDBC

LẬP TRÌNH WINDOWS FORM VỚI CÁC CONTROL NÂNG CAO (Các control trình bày dữ liệu dưới dạng danh sách)

Lab01: M V C Lưu ý: Để thực hành, các bạn phải cài Visual Studio 2013 trở lên mới hỗ trợ MVC5.

BÀI THỰC HÀNH SỐ 1. Quản trị tập tin: 1/ Tạo các thư mục sau: Bài tập thực hành linux Linuxlab. bt1 bt11 bt111. bt121. bt12. bh1 bh11 bh111.

dụng một chính sách, điều này giúp dễ dàng quản lý và cung cấp tính năng Load Balancing (cân bằng tải) phục vụ tốt hơn các yêu cầu của tổ chức.

GV: Phạm Đình Sắc or

Bài thực hành số 2 QUYỀN và ROLE

Qu n ả tr h ố g t p ậ tin

Tìm hiểu Group Policy Object và các ví dụ

Nhấn nút New để tạo 1 biến mới Trang 17

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

HƢỚNG DẪN TRIỂN KHAI KASPERSKY - MOBILE DEVICE MANAGEMENT

Dọn "rác" Windows 7 vào dịp cuối năm

Các kiểu định địa chỉ họ MSC-51

Ôn tập Thiết bị mạng và truyền thông DH07TT - Lưu hành nội bộ (không sao chép dưới mọi hình thức)

BẢO MẬT TRONG SQL SERVER

Phần 2. SỬ DỤNG POWERPOINT ĐỂ CHUẨN BỊ NỘI DUNG TRÌNH BÀY

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH MINICHAT. Bài giảng 3. Trang1. Khoa Khoa Học Và Kỹ Thuật Máy Tính

NHÚNG. Vi ñiều khiển BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 2

FCAPS. nhìn từ quan điểm ITIL. Công cụ ManageEngine và ứng dụng khung ITIL trong các tổ chức, doanh

Khoa Công Nghệ Thông Tin Trường Đại Học Cần Thơ. Những hỗ trợ tiên tiến khác của SQL. Đỗ Thanh Nghị

HƯỚNG DẪN QUẢN TRỊ HỆ THỐNG

Một số vấn đề cần quan tâm Nguyễn Duy Hải TT CNTT-ĐHSP Hà Nội

HỢP ĐỒNG MUA BÁN HÀNG HÓA QUỐC TẾ GV: NGUYỄN THỊ BÍCH PHƯỢNG

Kích hoạt phương thức xa (RMI- Remote Method Invocation )

THAO TÁC VỚI TẬP TIN TRONG C++

Bài 7: Các cấu trúc điều khiển

MA NG MA Y TI NH (Computer Networks)

BÀI LAB ĐỔI TÊN DOMAIN

NỘI DUNG ÔN TẬP MÔN HỆ CƠ SỞ DỮ LIỆU

ĐỀ CƯƠNG CHI TIẾT HỌC PHẦN

LƠỜ I NOÓ I ĐAẦ U. Chương 2: Tìm kiếm và sắp xếp o Tìm kiếm o Sắp xếp

biến Global có thể được áp dụng cho tất cả các extension trong tất cả các context trong Dialplan.

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

CHAPTER 6: DANH SÁCH LIÊN KẾT (LINKED LISTS)

LINQ TO SQL & ASP.NET

Transcription:

Lecture 12. Trees (1/2) Nội dung bài học: 12.1. Khái niệm về cây. 12.2. Các phương pháp duyệt cây. Tham khảo: 1. Deshpande Kakde: C and Data structures.chm, Chapter 21: Trees 2. Elliz Horowitz Fundamentals of Data Structures.chm, Chapter 5: Trees. 3. Kyle Loudon: Mastering lgorithms with C.chm, Chapter 9. Trees.

12.1. Khái niệm về cây (1/) 12.1.1. Giới thiệu. Treesđược dùng cho cấu trúc dữ liệu dạng phân cấp. Ví dụ: Việc phân cấp cấu trúc dữ liệuđược dùng cho minh họa lượcđồ công việc. Tổ chức của mộtđơn vị. Cây biểu thức. Khoa Công nghệ thông tin BM KHMT BM HTTT BM NM BM CNPM BM Toán TTMT Phòng TN Giáo viên 1 Giáo viên 2 Ví dụ về cây: Tổ chức Khoa CNTT

12.1. Khái niệm về cây (2/) 12.1.2. Định nghĩa về tree. Câyđượcđịnh nghĩađệ quy như sau: Một câyđượcđịnh nghĩa bởi một tập các node T có dạng: Có một nodeđặc biệt gọi là root. Các node còn lạiđược phân chia rời nhau thành n tập dạng T 1, T 2,,T n, trongđó T i cũng là một cây.

12.1. Khái niệm về cây (3/) B C D G H I E F Hình trên minh họa 1 cây. Tập hợp các node {, B, C, D, G, H, I, E, F}. là root. Các node còn lại được chia thành các tập {B, G, H, I}, {C, E, F} và {D}. Mỗi tập trên lại tạo thành 1 cây.

12.1. Khái niệm về cây (4/) B C D G H I E F Minh họa trên không phải là một cây. Mặc dù: Tập hợp các node vẫn là {, B, C, D, G, H, I, E, F}. là root. Node E thuộc 2 tập hợp.

12.1. Khái niệm về cây (5/) Bậc của một node: là số node con của node đó. Bậc của một cây: là bậc lớn nhất của các node trên cây. Node gốc: là node không có node cha. Node lá: là node có bậc bằng 0. Node nhánh: là node có bậc khác 0 và không phải là node gốc. Mức của một node: Gọi mức của node root là 1 (cây T 0 ). Gọi T 1, T 2, T 3,..., T n là các cây con của T 0 Mức của T 1 = Mức của T 2 =... = Mức của T n = Mức của T 0 + 1=2 Chiều cao của cây hay độ sâu của cây: là mức cao lớn nhất của node trên cây.

12.1. Khái niệm về cây (6/) Gốc. Cạnh (cung). Node. Lá. Cạnh (edge, arc) Gốc (root) node B C D G H I E F Lá (leaf)

12.1. Khái niệm về cây (7/) Một số ví dụ sử dụng cây: Cây phả hệ. Cây quyết định. Sử dụng cây để tạo queue có độ ưu tiên. Tổ chức truy cập dữ liệu nhanh, ví dụ như B-tree.

12.1. Khái niệm về cây (8/) Xây dựng cây: Có thể xây dựng cây như danh sách liên kết, tuy nhiên mỗi thành phần có nhiều con trỏ (nhiều con). Mỗi node chứa thông tin về node. Sử dụng mảng để lưu các con. Ví dụ về khai báo cây: struct node { TreeEntry data; struct node *children[max]; };

12.2. Các phương pháp duyệt cây (1/2) Việc thăm tất cả các node trên cây 1 lần được gọi là duyệt cây. Với một cây có n node, như vậy có n! cách duyệt cây khác nhau. Tuy nhiên, đa số các phép duyệt cây đó không hữu ích. Đối với cây tổng quát, có 2 cách duyệt cây thông thường: Phương pháp duyệt cây theo chiều rộng (Breadth-first traversal) Phương pháp duyệt cây theo chiều sâu (Depth-first traversal). Với một cây có n node, độ phức tạp sẽ là O(n).

12.2. Các phương pháp duyệt cây (2/2) Một số thao tác khi duyệt cây: Xem tất cả các node trên cây. Tìm phần tử lớn nhất hay nhỏ nhất trên cây. Xác định số node có trên cây. Sao chép cây....

12.2.1. Duyệt cây theo chiều sâu (1/7) Các thao tác chính khi duyệt cây: N: Duyệt node đang xét. L: Duyệt cây con bên trái của node đang xét. R: Duyệt các cây con còn lại của node đang xét. Với các thao trên, có 3 cách cơ bản: Duyệt tiền thứ tự (Preorder): NLR Duyệt trung thứ tự (Inorder): LNR Duyệt hậu thứ tự (Postorder): LRN

12.2.1. Duyệt cây theo chiều sâu (2/7) Duyệt tiền thứ tự (Preorder): NLR 1. Thăm node đang xét trước các node con của nó. 2. Các node con được thăm theo thứ tự từ trái qua phải. 3. Với mỗi node con, việc thăm được thực hiện theo dạng tiền thứ tự.

12.2.1. Duyệt cây theo chiều sâu (3/7) Duyệt tiền thứ tự (Preorder): NLR Preorder(node) 1. Thăm node. 2. Với mỗi con k của node: Preorder(k) 2 B 6 C 9 D 3 4 5 7 8 G H I E F 1 Thứ tự đã duyệt: B G H I C E F D

12.2.1. Duyệt cây theo chiều sâu (4/7) Duyệt trung thứ tự (Inorder): LNR 1. Thăm con thứ nhất của node đang xét dạng trung thứ tự. 2. Thăm node đang xét. 3. Thăm các con còn lại của node đang xét dạng trung thứ tự.

12.2.1. Duyệt cây theo chiều sâu (5/7) Duyệt trung thứ tự (Inorder): LNR Inorder(node) 1. Inorder(FirstChildren). 2. Thăm node. 3. Với mỗi con còn lại k của node: Inorder(k) 2 B 7 C 9 D 1 3 4 6 8 G H I E F 5 Thứ tự đã duyệt: G B H I E C F D

12.2.1. Duyệt cây theo chiều sâu (6/7) Duyệt hậu thứ tự (Postorder): LRN 1. Thăm con thứ nhất của node đang xét dạng hậu thứ tự. 2. Thăm các con còn lại của node đang xét dạng hậu thứ tự. 3. Thăm node đang xét.

12.2.1. Duyệt cây theo chiều sâu (7/7) Duyệt hậu thứ tự (Postorder): LRN Postorder(node) 1. Postorder(FirstChildren). 2. Với mỗi con còn lại k của node: Postorder(k) 3. Thăm node. 4 B 7 C 8 D 1 2 3 5 6 G H I E F 9 Thứ tự đã duyệt: G H I B E F C D

12.2.2. Duyệt cây theo chiều rộng (1/2) Thăm các node bắt đầu từ mức thấp nhất cho đến các mức cao. Tại mỗi mức, thăm từ trái sang phải. Sử dụng queue hỗ trợ trong quá trình duyệt cây. Phương pháp này còn được gọi là Level-Order Traversal.

12.2.2. Duyệt cây theo chiều rộng (2/2) Thứ tự đã duyệt: B C D G H I E F 2 1 B 3 C 4 D 5 6 7 8 9 G H I E F

Cây nhị phân Nội dung: 12.1. Khái niệm về cây nhị phân. 12.2. Biểu diễn cây nhị phân. 12.4. Duyệt cây nhị phân. Tham khảo: 1. Deshpande Kakde: C and Data structures.chm, Chapter 21: Trees 2. Elliz Horowitz Fundamentals of Data Structures.chm, Chapter 5: Trees 3. Kyle Loudon: Mastering lgorithms with C.chm, Chapter 9 Trees. PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 21 / 11

12.1. Khái niệm về cây nhị phân (1/7) 12.1.1. Giới thiệu vàđịnh nghĩa: Cây nhị phân là trường hợpđặc biệt của cây, trongđó không có node nào trên cây có bậc lớn hơn 2. Do đó cây nhị phân T có thểđịnh nghĩa: Có một nodeđặc biệt trên cây gọi là root của cây. Các node khác trên câyđược chia thành 2 tập T 1 và T 2, trongđó chúng cũng là cây nhị phân. Cây con T 1 được gọi là cây con bên trái. Cây con T 2 được gọi là cây con bên phải. PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 22 / 11

12.1. Khái niệm về cây nhị phân (2/7) Từ định nghĩa cây nhị phân ta nhận thấy rằng: Số node tối đa trên cây nhị phân tại mức i là 2 i 1 B C Nếu k là độ sâu của cây thì số phần tử tối đa trên cây là: D E F G 2 k 1 = 2 k 1 + 2 k 2 + + 2 0 H I Ví dụ về cây nhị phân PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 23 / 11

12.1. Khái niệm về cây nhị phân (3/7) Cây lệch: Trong thực tế, có dạng đặc biệt: cây lệch. Cây lệch là cây chỉ có cây con trái hoặc phải. B B C C Cây lệch trái Cây lệch phải PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 24 / 11

12.1. Khái niệm về cây nhị phân (4/7) Cây nhị phân đầy đủ (Full binary tree): Cây nhị phân đầy đủ có độ cao là k thì các node ở mức thấp hơn có đủ con trái và phải. Như vậy, với cây nhị phân đầy đủ có độ cao là k thì số node trên cây là 2 k -1. Ví dụ: Với k=3, số node trên cây nhị phân đầy đủ là 2 3-1=7 B E C D F G Ví dụ về cây nhị phân đầy đủ có độ cao là 3 PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 25 / 11

12.1. Khái niệm về cây nhị phân (5/7) Cây nhị phân hoàn chỉnh (Complete binary tree): Cây nhị phân hoàn chỉnh có độ cao là k, với độ cao k-1 là đầy đủ. Tại độ cao là k, các node được đưa vào cây từ trái sang phải. Nhận xét: Các node tại mức k-2 về trước có đủ 2 con. Các node ở mức k-1 có thể có 2 con hoặc 1 con. Nếu có 1 con trì có con trái (các node cùng mức trước đó đã có 2 con) B E B E C D C D F Ví dụ về cây nhị phân hoàn chỉnh PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 26 / 11

12.1. Khái niệm về cây nhị phân (6/7) So sánh giữa cây nhị phân đầy đủ và hoàn chỉnh: Cây nhị phân đầy đủ là trường hợp riêng của cây nhị phân hoàn chỉnh. Cây nhị phân hoàn chỉnh chưa chắc đã là cây nhị phân đầy đủ. B E B E C D F G C D F Cây nhị phân đầy đủ Cây nhị phân hoàn chỉnh PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 27 / 11

12.1. Khái niệm về cây nhị phân (7/7) Cây nhị phân cân bằng (Balanced binary tree): Cây nhị phân cân bằng là cây mà tại mỗi node độ cao cây con trái và phải không lệch nhau quá 1. B E B E C D C D F Ví dụ về cây nhị phân cân bằng PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 28 / 11

12.2. Biểu diễn cây nhị phân (1/6) Với cây nhị phân hoàn chỉnh có thể biểu diễn cây bằng mảng có n phần tử. Nếu cây nhị phân hoàn chỉnh được biểu diễn dưới dạng mảng, giá trị của phần tử thứ i sẽ được chứa trong mảng tại vị trí thứ i (1<=i<=n). Khi đó, phần tử cha của i sẽ là i/2 và 2 con của node i sẽ là 2i và 2i+1. 1 2 B 3 C B C 4 5 D E D E Biểu diễn cây nhị phân hoàn chỉnh bằng mảng PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 29 / 11

12.2. Biểu diễn cây nhị phân (2/6) Với cây nhị phân bất kỳ cũng có thể biểu diễn dạng mảng. Tuy nhiên, cách biểu diễn trên gây lãng phí bộ nhớ. 1 2 B 3 C B C 4 D 5 EF 6 D E F G 7 G 8 H I 9 10 H I 11 Ô nhớlãng phí PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 30 / 11

12.2. Biểu diễn cây nhị phân (3/6) Với cách biểu diễn trên có ưu điểm là có khả năng truy cập dữ liệu nhanh. Tuy nhiên, nhược điểm chính là lãng phí ô nhớ. Có thể biểu diễn cây dạng mảng, trong đó, mỗi node sẽ có cấu trúc: Dữ liệu của node. Chỉ số của node con trái. Chỉ số của node con phải. Left index Data Right index PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 31 / 11

12.2. Biểu diễn cây nhị phân (4/6) Ví dụ về biểu diễn cây nhị phân. Left index 2 4 6 0 8 0 0 0 0 Data Right index 1. 3 2. B 5 3. C 7 4. D 0 5. E 9 6. F 0 7. G 0 8. H 0 9. I 0 D B C E F G H I PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 32 / 11

12.2. Biểu diễn cây nhị phân (5/6) Việc biểu diễn cây dạng mảng không phù hợp với việc thường xuyên thêm bớt trên cây. Chi phí cho việc thêm bớt quá lớn. Do đó, ta có thể biểu diễn cây dạng liên kết. Trong trường hợp này, mỗi phần tử sẽ có 3 thành phần: Thành phần dữ liệu, Con trỏ liên kết trái, Con trỏ liên kết phải Left ptr Data Right ptr Biểu diễn trên ngôn ngữ C: struct tnode { TreeEntry data; struct tnode *lchild,*rchild; }; PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 33 / 11

12.2. Biểu diễn cây nhị phân (6/6) B C D NULL NULL NULL NULL Ví dụ về biểu diễn cây dạng liên kết PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 34 / 11

12.3. Duyệt cây nhị phân (1/9) Đối với cây nói chung, cây nhị phân nói riêng, dữ liệu được lấy ra phụ thuộc vào cách duyệt cây. Thông thường, có 4 cách duyệt cây sau: Duyệt tiền thứ tự (PreOrder): NLR. Duyệt hậu thứ tự (PostOrder): LRN. Duyệt trung thứ tự (InOrder): LNR Duyệt theo chiều rộng (LevelOrder). PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 35 / 11

12.3. Duyệt cây nhị phân (2/9) Duyệt tiền thứ tự (Preorder): NLR 1. Thăm node đang xét trước các node con của nó. 2. Thăm cây con bên trái. 3. Thăm cây con bên phải. PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 36 / 11

12.3. Duyệt cây nhị phân (3/9) Duyệt tiền thứ tự (Preorder): NLR void NLR(Tree root) { if (root!= NULL) { xử lý root; NLR (root->left); NLR (root->right); } } 2 B Thứ tựđã duyệt: B D E H I C F G 1 7 C 3 4 8 9 D E F G 5 H 6 I PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 37 / 11

12.3. Duyệt cây nhị phân (4/9) Duyệt trung thứ tự (Inorder): LNR 1. Thăm cây con bên trái của node đang xét trước. 2. Thăm node đang xét. 3. Thăm cây con bên phải của node đang xét. PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 38 / 11

12.3. Duyệt cây nhị phân (5/9) Duyệt trung thứ tự (Inorder): LNR void LNR(Tree root) { if (root!= NULL) { LNR(root->left); xử lý root; LNR(root->right); } } 2 B Thứ tựđã duyệt: D B H E I F C G 6 8 C 1 4 7 9 D E F G 3 H 5 I PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 39 / 11

12.3. Duyệt cây nhị phân (6/9) Duyệt hậu thứ tự (Postorder): LRN 1. Thăm cây con bên trái của node đang xét trước. 2. Thăm cây con bên phải của node đang xét trước. 3. Thăm node đang xét. PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 40 / 11

12.3. Duyệt cây nhị phân (7/9) Duyệt hậu thứ tự (Postorder): LRN void LRN(Tree root) { if (root!= NULL) { LRN (root->left); LRN (root->right); xử lý root; } } 5 B Thứ tựđã duyệt: D H I E B F G C 9 8 C 1 4 6 7 D E F G 2 H 3 I PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 41 / 11

12.3. Duyệt cây nhị phân (8/9) Thăm các node bắt đầu từ mức thấp nhất cho đến các mức cao. Tại mỗi mức, thăm từ con trái trước, sau đó thăm con phải. Sử dụng queue hỗ trợ trong quá trình duyệt cây. Phương pháp này còn được gọi là Level-Order Traversal. PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 42 / 11

12.3. Duyệt cây nhị phân (9/9) 1 2 B C 3 4 5 6 7 D E F G 8 H 9 I Thứ tự đã duyệt: B C D G H I E F PhD Tống Minh Đức Mob: 0984-485-888 Email: tmduc08@gmail.com 43 / 11