Câu hỏi:
01/10/2024 43Trình bày thuật toán xác định giá trị * = 34 có thuộc cây tìm kiếm nhị phân được biểu diễn ở Hình 4b hay không.
Sách mới 2k7: Tổng ôn Toán, Lí, Hóa, Văn, Sử, Địa…. kỳ thi tốt nghiệp THPT Quốc gia 2025, đánh giá năng lực (chỉ từ 110k).
Quảng cáo
Trả lời:
Thuật toán để xác định giá trị * = 34 có thuộc cây tìm kiếm nhị phân được biểu diễn ở Hình 4b hay không được thực hiện bằng cách duyệt cây từ gốc xuống đến khi tìm thấy giá trị hoặc đến khi không còn nút nào để duyệt.
Thuật toán như sau:
Cách 1: Sử dụng các phép toán duyệt trước, duyệt giữa, duyệt sau để xác định giá trị x = 34 có thuộc cây tìm kiếm nhị phần ở Hình 4 hay không.
Ví dụ: Sử dụng phép duyệt trước để tìm giá trị x
def insertTree(T, i, v):
if 1 >= len(T):
T.extend([None]*(i-len(T)+1))
if T[i]== None:
T[i]= v== quân thi sáng ngà
print("Đã tồn tại nút có giá trị bằng", v)
elif v<T[i]:
insertTree(T, 2*1+ 1, v)
else:
insertTree(T, 2*i +2, v)
def createBSTTree(T, a):
for v in a:
insertTree (T, 0, v)
def preorderSearch (T, i, x):
global found
if i < len(T) and T[1] != None: if T[i] == x:
found = True
return
else:
preorderSearch(T, 2*i + 1, x)
preorderSearch(T, 2*1 + 2, x)
def Search(T, x):
global found
found = False
preorderSearch(T, 0, x) return found
a =list(map (int, input().split()))
x = int(input())
T = []
createBSTTree(T, a)
found Search(T, x)
print (found)
Cách 2: Sử dụng thuật toán đệ quy search(T, i, x) để tìm kiếm x trên cây tìm kiếm nhị phân T gốc i.
Mã nguồn hàm tìm kiếm giá trị trên cây tìm kiếm nhị phân sử dụng đệ quy:
Em có thể sử dụng đệ quy hoặc vòng lặp để tìm một nút trên cây tìm kiếm nhị phần. Hàm đệ quy search(T, i, x) dùng để tìm kiếm giá trị x trên cây tim kiếm nhị phần T gốc i.
#Tìm x trên cây tìm kiếm nhị phân T gốc 1
def search(T, i, x):
if i >= len(T) or T[i] == None:
return False
X:
#Cây T gốc i là rỗng #không tìm thấy x
#Tìm thấy x
elif T[i]
return True
elif x <T[i]:
else:
return search(T, 2*1+2, x)
#Tim x trên cây con phải
return search(T, 2*1+1, x)
#Tim x trên cây con trái
CÂU HỎI HOT CÙNG CHỦ ĐỀ
Câu 1:
Cho cây tìm kiếm nhị phân như Hình 9. Em hãy thực hiện:
a) Mô tả các bước để tìm giá trị x = 22 có trong cây theo các thuật toán: duyệt trước, duyệt giữa, duyệt sau và tìm kiếm trên cây tìm kiếm nhị phân.
b) Với các thuật toán ở câu a), trong trường hợp tổng quát của cây tìm kiếm nhị phần, thuật toán nào có số lần so sánh khóa cần tìm với khóa của các nút là ít nhất.
c) Viết chương trình tạo cây tìm kiếm nhị phân ở Hình 9. Sau đó, in ra màn hình các khóa có trong cây này theo thứ tự tăng dần.
Câu 2:
Em hãy vẽ cây tìm kiếm nhị phân bằng cách đưa vào cây rỗng lần lượt các phần tử của mảng A = [3, 6, 13, 7, 5, 2, 8, 9].
Câu 3:
Cho tập hợp A gồm các số nguyên dương A = (6, 14, 10, 34, 40, 30, 46, 20, 24, 22} được lưu trữ bằng hai cách sau:
Cách 1: Lưu vào mảng một chiều.
Cho giá trị x = 20. Em hãy trình bày:
a) Cách tìm kiếm x trong mảng A.
b) Cách tìm kiếm x trong cây nhị phân.
Câu 4:
Cho mảng A = [5, 7, 30, 23, 34, 15]. Hãy vẽ cây tìm kiếm nhị phân biểu diễn mảng A.
về câu hỏi!