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

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.

Quảng cáo

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

Quảng cáo

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:

Quảng cáo

Xem thêm lời giải bài tập Chuyên đề học tập Tin học 12 Chân trời sáng tạo hay, chi tiết khác:

Xem thêm các tài liệu học tốt lớp 12 hay khác:

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Nếu thấy hay, hãy động viên và chia sẻ nhé! Các bình luận không phù hợp với nội quy bình luận trang web sẽ bị cấm bình luận vĩnh viễn.


Giải bài tập lớp 12 sách mới các môn học