MỘT SỐ VÍ DỤ
3.5.5.2. CÂY TÌM KIẾM NHỊPHÂN
Một cây tìm kiếm nhị phân là một cây nhị phân T mà trong đó:
Mỗi đỉnh được gán cho một nhãn
Các nhãn có thể so sánh được với nhau
∀ đỉnh v ∈T, các nhãn trong cây con bên trái của v đều nhỏ
hơn nhãn của v và các nhãn trong cây con bên phải của v đều lớn hơn nhãn của v
3.5.5.2. CÂY TÌM KIẾM NHỊ PHÂN
3.5.5.2. CÂY TÌM KIẾM NHỊ PHÂN
Thuật tốn tìm kiếm trên cây tìm kiếm nhị phân
Giả sử ta có một cây tìm kiếm, x là một giá trị nào đó
Xác định vị trí của biến x nếu x là nhãn của một đỉnh v
Nếu thấy rằng x không là nhãn của một đỉnh nào cả thì tạo ra một đỉnh mới và gán nhãn x cho đỉnh đó
3.5.5.2. CÂY TÌM KIẾM NHỊ PHÂN
Thuật tốn tìm kiếm trên cây tìm kiếm nhịphân
Void TK (Cây NPTK T, phần tử x); {
v = gốc của T;
if(v == NULL) thêm đỉnh r vào cây và gán cho nó nhãn là x
while((v != NULL) && (label(v) != x) ) {
if(x == label(v)) cout<< “Tìmđược x”; if(x < label(v))
if(con bên trái v != NULL) v = con bên trái v;
else thêm đỉnh nhãn x là con bên trái v và đặt v := NULL;
if(x > label(v))
if(con bên phải v != NULL) v = con bên phải v;
else thêm đỉnh nhãn x là con bên phải v và đặt v:=NULL;
}
3.5.5.2. CÂY TÌM KIẾM NHỊ PHÂN
Biểu diễn cây nhị phân
Thơng tin lưu tại nút: Info.
3.5.5.2. CÂY TÌM KIẾM NHỊ PHÂN
Cấu trúc dữ liệu của 1 nút
typedef struct tagTNode {
int Key; //trường dữ liệu là 1 số nguyên
struct tagTNode *pLeft;
struct tagTNode *pRight; } TNode;
Cấu trúc dữ liệu của cây
3.5.5.2. CÂY TÌM KIẾM NHỊ PHÂN
Tạo cây rỗng
Cây rỗng -> địa chỉ nút gốc bằng NULL
void CreateTree(TREE &T) {
T=NULL; }