Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (644.13 KB, 10 trang )
<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
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
tì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
struct BinaryNode {
T elem;
BinaryNode * left;
BinaryNode * right;
BinaryNode(T x, BinaryNode * l, BinaryNode * r) {
elem = x;
left = l;
right = r;
}
BinarySearchTree() {
root = NULL;
}
~BinarySearchTree() {
makeEmpty();
}
void makeEmpty() { // hàm xóa rỗng cây
makeEmpty(root); // gọi hàm private trợ giúp
}
bool isEmpty() { // hàm kiểm tra rỗng
return (root == NULL);
// Hàm public
BinaryNode * v = findMin(root); // gọi hàm private
return v->elem;
}
// Hàm private trợ giúp (dùng đệ quy)
BinaryNode * findMin(BinaryNode * t) {
if (t == NULL) // cây rỗng?
return NULL;
if(t->left == NULL) // nút ngoài cùng bên trái?
return t;
// Hàm public
T findMax() {
BinaryNode * v = findMax(root); // gọi hàm private
return v->elem;
}
// Hàm private trợ giúp (không dùng đệ quy)
BinaryNode * findMax(BinaryNode * t) {
if (t != NULL)
while (t->right != NULL) // chưa đến tận cùng?
t = t->right; // đi tiếp sang bên phải
return t;