btvn.vn
Tìm kiếm Đăng nhập

Chiều cao, khóa biên và chi phí tìm kiếm

Lưu trên thiết bị này
Chuyên đề lựa chọn CS: Cây tìm kiếm nhị phân · Chọn bài khác

Tìm khóa nhỏ nhất và lớn nhất

Trong BST không rỗng, khóa nhỏ nhất ở nút đi hết nhánh trái từ gốc; khóa lớn nhất ở nút đi hết nhánh phải. Các hàm dưới đây trả **giá trị khóa**, không trả chỉ số. height đếm cạnh: lá cao 0. Trong đệ quy, quy ước trả −1 cho nhánh rỗng để một nút lá có 1+max(−1,−1)=0. Đây là quy ước tính trong mã; gốc của cây không rỗng vẫn ở mức 0. ```python def height(T, k=0): if not 0 <= k < len(T) or T[k] is None: return -1 return 1 + max(height(T, left(k)), height(T, right(k))) def minimum(T): if not T or T[0] is None: raise ValueError("Cây rỗng") k = 0 while left(k) < len(T) and T[left(k)] is not None: k = left(k) return T[k] def maximum(T): if not T or T[0] is None: raise ValueError("Cây rỗng") k = 0 while right(k) < len(T) and T[right(k)] is not None: k = right(k) return T[k] ```

Số nút không phải chiều cao

Cây mẫu bảy nút có height=2, minimum=2, maximum=14. Sau khi chèn 5 làm con trái của 6, đường 8→4→6→5 có ba cạnh nên height=3. Tìm 5 xét bốn nút 8,4,6,5. Với cây cao h, một đường tìm xét nhiều nhất h+1 nút thật. Khi phân tích tăng trưởng thường viết O(h+1), hay O(h) với h đủ lớn; cây thấp giúp tìm nhanh hơn, cây suy biến n nút có thể phải xét n nút. Nếu chiều cao giữ ở mức O(log n), tìm kiếm có chi phí O(log n); không kết luận mọi BST đều như vậy. Với biểu diễn mảng, chèn còn có thể tốn thêm nhiều thao tác tạo None. Vì thế không lấy riêng chi phí đi một đường để khẳng định toàn bộ việc dựng cây hoặc sắp xếp bằng mảng luôn O(n log n). Mô hình nút liên kết tránh các ô trống nhưng không tự giải quyết cây lệch.

Bài luyện

Với quy ước của height trong bài, một cây chỉ có gốc có chiều cao bao nhiêu?
Chọn một đáp án

Bài luyện

Sau chèn 5 vào cây mẫu, đường 8→4→6→5 có ba cạnh. height(T) là bao nhiêu?
Chọn một đáp án

Bài luyện

Vì sao chèn vào BST biểu diễn mảng có thể tốn hơn việc đi một đường tìm vị trí?
Chọn một đáp án

Đang học