Câu hỏi:
13/07/2024 78Nếu không cần cập nhật vào dãy A mà chỉ cần in ra màn hình các phần tử của A theo thứ tự tăng dần thì cần sửa lại chương trình sắp xếp trên như thế nào?
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ừ 70k).
Quảng cáo
Trả lời:
Nếu không cần cập nhật vào dãy A mà chỉ cần in ra màn hình các phần tử của A theo thứ tự tăng dần, bạn có thể sửa lại chương trình sắp xếp trên để thay vì trả về dãy số mới, nó sẽ in trực tiếp các phần tử theo thứ tự tăng dần trong quá trình duyệt cây.
Cài đặt lại hàm để in trực tiếp
1. Định nghĩa cấu trúc nút cây BST
class TreeNode:
def __init__(self, key):
self.left = None
self.right = None
self.val = key
2. Hàm chèn một phần tử vào BST
def insert(root, key):
if root is None:
return TreeNode(key)
else:
if root.val < key:
root.right = insert(root.right, key)
else:
root.left = insert(root.left, key)
return root
3. Hàm duyệt giữa để in các phần tử theo thứ tự tăng dần
def in_order_traversal_and_print(root):
if root:
in_order_traversal_and_print(root.left)
print(root.val, end=' ')
in_order_traversal_and_print(root.right)
4. Hàm chính để sắp xếp và in dãy A
def BSTSortAndPrint(A):
if not A:
return
# Bước 1: Tạo cây tìm kiếm nhị phân từ dãy A
root = None
for key in A:
root = insert(root, key)
# Bước 2: Duyệt cây để in các phần tử theo thứ tự tăng dần
in_order_traversal_and_print(root)
print() # Thêm dòng mới sau khi in xong
CÂU HỎI HOT CÙNG CHỦ ĐỀ
Câu 1:
Thuật toán sắp xếp dãy sử dụng cây tìm kiếm nhị phân có độ phức tạp thời gian là bao nhiêu?
Câu 3:
Cho trước dãy số A = [2,1,9,0,2,1,5]. Tạo cây tìm kiếm nhị phân T từ dãy A và thực hiện thuật toán duyệt giữa trên cây T. Em hãy cho biết kết quả duyệt là dãy các khoá có thứ tự như thế nào.
Câu 4:
Trao đổi, thảo luận để giải bài toán sau:
Cho trước dãy số A. Thiết kế thuật toán sắp xếp lại dãy A theo thứ tự tăng dần hoặc giảm dần.
Câu 5:
Quan sát cây tìm kiếm nhị phân trong hình 9.1, cùng trao đổi, thảo luận các câu hỏi sau:
a) Nếu thực hiện thuật toán duyệt giữa (trái – gốc – phải) thì nút đầu tiên được duyệt là nút nào?
b) Nút cuối cùng được duyệt là nút nào?
c) Thứ tự các nút được duyệt theo thuật toán duyệt giữa sẽ theo thứ tự nào? Em có nhận xét gì về kết quả đạt được? Giải thích vì sao.
Câu 6:
Dựa trên hàm BSTSort(A) đã biết, viết chương trình sắp xếp dãy số giảm dần theo kĩ thuật sử dụng cây tìm kiếm nhị phân.
Câu 7:
Dựa trên tính chất của cây tìm kiếm nhị phân, hãy viết hàm minimum(T) và maximum(T) tính giá trị khoá nhỏ nhất và lớn nhất của cây tìm kiếm nhị phân T.
15 câu Trắc nghiệm Tin học 12 Kết nối tri thức Bài 19 có đáp án
15 câu Trắc nghiệm Tin học 12 Kết nối tri thức Bài 18 có đáp án
15 câu Trắc nghiệm Tin học 12 Kết nối tri thức Bài 15 có đáp án
263 câu Trắc nghiệm tổng hợp ôn thi tốt nghiệp THPT môn Tin học Chủ đề F. Giải quyết vấn đề với sự trợ giúp của máy tính có đáp án
15 câu Trắc nghiệm Tin học 12 Kết nối tri thức Bài 16 có đáp án
15 câu Trắc nghiệm Tin học 12 Kết nối tri thức Bài 14 có đáp án
15 câu Trắc nghiệm Tin học 12 Kết nối tri thức Bài 20 có đáp án
15 câu Trắc nghiệm Tin học 12 Cánh diều Làm quen với CSS có đáp án
về câu hỏi!