Cây 2-3 là một loại cây trong cấu trúc dữ liệu, trong đó mọi nút của cây đều là 2 nút
hoặc 3 nút. Đây là một loại B-Tree đặc biệt với đơn đặt hàng 3.
2 nút trong cây là một nút có một phần dữ liệu và hai nút con.
Nút 3 trong cây là một nút có hai phần dữ liệu và ba nút con.
Hình:- Một cây 2-3
Thuộc tính của cây 2-3:-
-
Mọi nút bên trong đều là nút 2 hoặc nút 3.
-
Một nút chứa một phần dữ liệu có thể là một nút 2 với chính xác 2 nút con hoặc một nút lá không có con nào.
-
Một nút chứa hai phần dữ liệu chỉ có thể là một nút 3 với đúng 3 phần tử con.
-
Tất cả các nút lá luôn ở cùng một mức.
-
Cây 2-3 luôn là cây cân đối về chiều cao.
-
Hoạt động tìm kiếm nhanh chóng và hiệu quả trong 2-3 cây.
2 Nút:-
-
Chính xác là hai đứa trẻ.
-
Còn lại con có trọng lượng nhỏ hơn.
-
Đúng trẻ có cân nặng lớn hơn.
-
Có thể là một nút lá không có nút con.
3 Nút:-
-
Chính xác là ba đứa trẻ.
-
2 giá trị dữ liệu.
-
Con bên trái có trọng lượng nhỏ hơn giá trị dữ liệu bên trái.
-
Con giữa có trọng số ở giữa cả hai giá trị dữ liệu.
-
Con bên phải có trọng số lớn hơn giá trị dữ liệu bên phải.
-
Không bao giờ có thể là một nút lá.
Các hoạt động trong 2-3 cây:-
1. Tìm kiếm trong 2-3 cây
-
Tương tự như thao tác tìm kiếm trong cây tìm kiếm nhị phân khi dữ liệu được sắp xếp.
-
Để tìm kiếm X trong 2-3 cây.
-
Nếu cây trống → trả về False
-
Nếu chúng ta đến nút gốc thì trả về False (không tìm thấy)
-
Nếu X nhỏ hơn phần dữ liệu bên trái, thì hãy tìm kiếm cây con bên trái
-
Nếu X lớn hơn dữ liệu bên trái và nhiều hơn dữ liệu bên phải, hãy tìm kiếm cây con ở giữa.
-
Nếu X lớn hơn phần dữ liệu bên phải, thì hãy tìm kiếm cây con bên phải.
2. Chèn một nút trong cây 2-3
-
Để chèn X vào một cây 2-3.
-
Nếu cây trống → Thêm X làm gốc.
-
Tìm kiếm đúng vị trí của X và thêm nó làm nút lá.
-
Nếu có một nút lá với một phần dữ liệu, hãy thêm X với và nút lá trở thành 2 - Nút.
-
Nếu nút lá có hai phần dữ liệu, hãy thêm X. Tách 3 nút tạm thời và di chuyển dữ liệu đến các nút mẹ theo thứ tự sắp xếp.
Tạo 2-3 cây và thêm các nút theo thứ tự → 10, 5, 8, 15, 23, 21
3. Xóa một nút trong cây 2-3
-
Để xóa X trong một cây 2-3.
-
Nếu cây trống, trả về false.
-
Tìm kiếm vị trí của X và xóa nó, sau đó điều chỉnh cây.
-
Nếu X là một phần của 3 nút xóa X và điều chỉnh giá trị bên trái và giá trị giữa. Đồng thời điều chỉnh giá trị bên trái và giá trị giữa của tổ tiên của nút nếu cần.
-
Nếu X là một phần của 2 nút thì điều chỉnh và tách cây theo cách đệ quy sắp xếp các nút theo thứ tự đã sắp xếp.