Trì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
Trì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.
Giải Chuyên đề Tin 12 Bài 2.3: Cây tìm kiếm nhị phân - Chân trời sáng tạo
Luyện tập 2 trang 44 Chuyên đề Tin học 12: Trì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.
Lời giả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
Lời giải bài tập Chuyên đề Tin 12 Bài 2.3: Cây tìm kiếm nhị phân hay, chi tiết khác: