Cây nh phân tìm kiếm
(Binary Search Trees)
Nguyễn Mạnh Hiển
hiennm@tlu.edu.vn
Đnh nghĩa
Xét trường hợp các phần tử có giá trị khác nhau
y nhphân tìm kiếm là cây nhphân, trong đó với
mọi nút X:
Tt cả các giá trị trên cây
con trái của X nhỏ hơn X
Tt cả các giá trị trên y
con phải của X lớn hơn X
Đây có phải là cây nhị phân tìm kiếm?
Các thao tác chính
Tìm phần tử nhỏ nhất
Tìm phần tử lớn nhất
Tìm phần tử x
Chèn phần tử x
Xóa phần tử x
Tất cả các thao tác trên có thời gian chạy trung bình
là O(log N)
sẽ chứng minh sau
Cài đt
template <typename T> // T là kiểu phần tử
class BinarySearchTree {
public:
hàm tạo, hàm hủy
kiểm tra rỗng
xóa rỗng cây
m min, tìm max, tìm phần tử x
chèn/xóa phần tử x
private:
struct BinaryNode { ... }; // kiểu của các nút
BinaryNode * root; // con trỏ tới nút gốc
các hàm trợ giúp
};