Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 21 Tổ chức lưu trữ cây nhị phân Sử dụng mảng một chiều lưu trữ kế tiếp Đánh số thứ tự từ gốc, tại mỗi mức, đánh số các nút từ tr
Trang 1Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Chương 4:
Cây
Gi ả ng viên: Ths Nguyễn Thị Khiêm Hòa
Trang 2Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 3Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
3
Mục tiêu
Trang bị khái niệm và ứng dụng trên Cây
Cài đặt các thuật toán trên cây, đặc biệt là cây nhị phân
tìm kiếm
Trang 4Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 5Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 6Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 7Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 8Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
8
Biểu diễn cây
Bằng danh sách (các dấu ngoặc lồng nhau)
Trang 9Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 10Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
M
D A
Trang 11Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 12Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 13Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
13
Các thuật ngữ
Tổ tiên (ancestors) của một nút
Con cháu (Descendant) của một nút:
Các con của cùng một cha gọi là anh em ruột (siblings)
Trang 14Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
14
Cây có thứ tự và Rừng
Cây có thứ tự (ordered tree)
Một cây gọi là có thứ tự khi ta thay đổi vị trí của các
cây con, ta nhận được một cây mới
Rừng (forest)
Tập hợp hữu hạn các cây phân biệt
Nếu bỏ đi nút gốc của một cây, ta sẽ thu được một
rừng gồm nhiều cây phân biệt
Trang 15Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 16Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
16
Cây nhị phân
Cây nhị phân biểu diễn biểu thức toán học
Trang 17Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
17
Tính chất của cây nhị phân
Số nút tối đa mức i trong cây 2i-1
Số nút tối đa trong cây là 2h-1 (h chiều cao của cây)
Chiều cao của cây h log2N (N là số nút trong cây)
Trang 18Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Các nút ứng với các mức trừ mức cuối đều đạt tối đa,
ở mức cuối, các nút đều đạt về phía trái
Trang 19Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 20Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Các nút ứng với các mức trừ mức cuối đều đạt tối đa,
ở mức cuối, các nút không dạt đều về phía trái
Trang 21Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
21
Tổ chức lưu trữ cây nhị phân
Sử dụng mảng một chiều (lưu trữ kế tiếp)
Đánh số thứ tự từ gốc, tại mỗi mức, đánh số các nút
từ trái sang phải, từ mức thấp đến mức cao
Sử dụng liên kết
Quản lý cây thông qua nút gốc (root)
Mỗi nút cấp phát động, bao gồm dữ liệu và địa chỉ hai
cây con pLeft, pRight, liên kết tới cây con trái và cây
con phải
Nút lá có hai liên kết trái phải đều rỗng
Trang 22Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
22
Lưu trữ kế tiếp cây nhị phân
Con của nút thứ i là nút thứ 2i+1 và 2i+2
Trang 23Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 24Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Địa chỉ 2 cây con pLeft, pRight liên kết đến nút con
trái và nút con phải
Trang 25Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
private Node<T> left;
private Node<T> right;
public Node(T data)
Trang 26Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
get{ return this.data;}
set{ this.data = value;}
Trang 27Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 28Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 29Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
29
Phép duyệt cây nhị phân (Binary Tree Traversing)
Định nghĩa
Là phép xử lý các nút trên cây, mỗi nút một lần
Duyệt cây theo thứ tự trước (preorder)
Duyệt cây theo thứ tự giữa (inorder)
Duyệt cây theo thứ tự sau (postorder)
Trang 30Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
30
Phép duyệt cây nhị phân (Binary Tree Traversing)
Duyệt cây theo thứ tự trước (NLR)- Đệ qui
Thăm gốc
Duyệt cây con trái theo thứ tự trước
Duyệt cây con phải theo thứ tự trước
Trang 31Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 32Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
32
Phép duyệt cây nhị phân (Binary Tree Traversing)
Duyệt cây theo thứ tự giữa (LNR)- Đệ qui
Duyệt cây con trái theo thứ tự giữa
Trang 33Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 34Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
34
Phép duyệt cây nhị phân (Binary Tree Traversing)
Duyệt cây theo thứ tự sau (LRN)- Đệ qui
Duyệt cây con trái theo thứ tự sau
Duyệt cây con phải theo thứ tự sau
Trang 35Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 36Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 37Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 38Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 39Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 40Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
40
Xóa một nút trên cây nhị phân tìm kiếm
Xóa một nút trên cây nhị phân tìm kiếm, có ba
trường hợp:
Nút cần xóa là nút lá
Nút cần xóa chỉ có 1 con (trái hoặc phải)
Nút cần xóa có đủ cả 2 con
Trang 41Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 42Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
42
Xóa một nút trên cây nhị phân tìm kiếm
Trường hợp 2: Nút cần xóa có một cây con trái
Trang 43Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
43
Xóa một nút trên cây nhị phân tìm kiếm
Trường hợp 2: Nút cần xóa có một cây con phải
Trang 44Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
44
Xóa một nút trên cây nhị phân tìm kiếm
Trường hợp 3 : Nút cần xóa có hai cây con trái và phải
Trang 45Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Biểu diễn cây m phân bằng liên kết động
Mỗi nút có m+1 trường, với m mối nối
Với cây m phân đầy đủ, có n(m-1)+1 mối liên kết NULL
Cây m phân đầy đủ có chiều cao log m N (N:số nút)
Trang 46Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
46
Cây M phân
Phép duyệt cây tổng quát LNR(T)
Nếu T rỗng, dừng
Ngược lại, T1,…,Tn là cây con gốc T
LNR(T1), T1 cây con thứ nhất của gốc T
Thăm gốc của T
Duyệt cây con T2,…,Tn của T theo thứ tự
giữa
Trang 47Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
47
Cây M_phân
Phép duyệt cây tổng quát LRN(T)
Nếu T rỗng, dừng
Ngược lại, T1,…,Tn là cây con gốc T
LNR(T1), T1 cây con thứ nhất của gốc T
Duyệt cây con T2,…,Tn của T theo thứ tự giữa
Thăm gốc của T
Trang 48Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
48
Cây M_phân
Duyệt cây theo mức
Duyệt cây theo chiều rộng
Trang 49Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
49
Cây M_phân tìm kiếm
Tương tự cây nhị phân tìm kiếm trong đó mỗi nút có thể
có m nút con
M càng lớn thì bậc của cây càng thấp
Cây m phân tìm kiếm cân bằng: B_cây
Trang 50Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Trang 51Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
51
B_Cây_Ứng dụng
Hạn chế số thao tác đọc mỗi lần tìm kiếm
trên cây Thích hợp cho việc tìm kiếm
trên bộ nhớ ngoài
Chiều cao cây = log M N chiều cao cây
giảm rất nhanh
Trang 52Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
52
B Cây_Tìm kiếm
Tương tự cây nhị phân tìm kiếm
Trang 53Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
53
B Cây_Thêm nút vào cây
Ý tưởng: Tìm vị trí thích hợp để thêm vào cây Nút thêm vào sẽ là
nút lá
Nếu nút lá chưa đầy thêm vào
Nếu đầy: phân đôi nút lá
Chuyển phần tử giữa lên nút cha
Hai bên của nút lá thành hai nhánh con
Việc phân đôi có thể lan truyền
Trang 54Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
54
B Cây_Thêm nút vào cây
Thực hiện thêm các nút sau vào B_cây bậc 5:
1 12 8 2 25 5 14 28 17 7 52 16 48 68
3 26 29 53 55 45
Kết quả:
Trang 55Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
55
Q&A