Câu hỏi:

01/10/2024 59

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.

Sale Tết giảm 50% 2k7: Bộ 20 đề minh họa Toán, Lí, Hóa, Văn, Sử, Địa…. form chuẩn 2025 của Bộ giáo dục (chỉ từ 49k/cuốn).

20 đề Toán 20 đề Văn Các môn khác

Quảng cáo

Trả lời:

verified
Giải bởi Vietjack

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:

Media VietJack

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.

Xem đáp án » 01/10/2024 244

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].

Xem đáp án » 01/10/2024 226

Câu 3:

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.

Xem đáp án » 01/10/2024 83

Câu 4:

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:

Media VietJack

Cách 1: Lưu vào mảng một chiều.

Media VietJack

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.

Xem đáp án » 01/10/2024 72

Câu 5:

Hình nào trong Hình 3 biểu diễn cây tìm kiếm nhị phân?

Media VietJack

 

Xem đáp án » 01/10/2024 60

Bình luận


Bình luận