Sử dụng cây tìm kiếm nhị phân để viết chương trình quản lí danh sách học sinh
Giải Chuyên đề Tin 12 Bài 8: Thực hành cây tim kiếm nhị phân - Kết nối tri thức
Vận dụng 2 trang 40 Chuyên đề Tin học 12: Sử dụng cây tìm kiếm nhị phân để viết chương trình quản lí danh sách học sinh của một trường trung học phổ thông. Mỗi một học sinh gồm các thông tin: mã học sinh (duy nhất), họ tên, ngày sinh. Chương trình cho phép thêm một học sinh vào danh sách với các trường thông tin kể trên, tìm kiếm học sinh theo mã và sửa đổi họ tên và ngày sinh ứng với một mã học sinh.
Lời giải:
Gợi ý chương trình mẫu về cách sử dụng cây tìm kiếm nhị phân để quản lí danh sách học sinh của một trường trung học phổ thông:
class Student:
def __init__(self, student_id, name, date_of_birth):
self.student_id = student_id
self.name = name
self.date_of_birth = date_of_birth
self.left = None
self.right = None
class StudentManager:
def __init__(self):
self.root = None
def insert(self, root, student_id, name, date_of_birth):
if root is None:
return Student(student_id, name, date_of_birth)
if student_id < root.student_id:
root.left = self.insert(root.left, student_id, name, date_of_birth)
elif student_id > root.student_id:
root.right = self.insert(root.right, student_id, name, date_of_birth)
return root
def add_student(self, student_id, name, date_of_birth):
self.root = self.insert(self.root, student_id, name, date_of_birth)
def search(self, root, student_id):
if root is None or root.student_id == student_id:
return root
if student_id < root.student_id:
return self.search(root.left, student_id)
return self.search(root.right, student_id)
def find_student(self, student_id):
return self.search(self.root, student_id)
def update_student(self, student_id, new_name, new_date_of_birth):
student = self.find_student(student_id)
if student:
student.name = new_name
student.date_of_birth = new_date_of_birth
else:
print("Student not found.")
# Sử dụng chương trình
student_manager = StudentManager()
# Thêm học sinh
student_manager.add_student(1001, "Nguyen Van A", "2005-03-15")
student_manager.add_student(1002, "Tran Thi B", "2004-08-22")
student_manager.add_student(1003, "Le Van C", "2006-01-10")
# Tìm kiếm học sinh
student = student_manager.find_student(1002)
if student:
print(f"Student found - Student ID: {student.student_id}, Name: {student.name}, Date of Birth: {student.date_of_birth}")
else:
print("Student not found.")
# Cập nhật thông tin học sinh
student_manager.update_student(1001, "Pham Thi D", "2005-05-20")
# Kiểm tra lại thông tin sau khi cập nhật
student = student_manager.find_student(1001)
if student:
print(f"Updated student - Student ID: {student.student_id}, Name: {student.name}, Date of Birth: {student.date_of_birth}")
else:
print("Student not found.")
Lưu ý trong mã chương trình này:
- Lớp Student đại diện cho mỗi học sinh, với các thuộc tính là student_id (mã học sinh), name (họ tên) và date_of_birth (ngày sinh).
- Lớp StudentManager chứa các phương thức để thêm học sinh vào danh sách, tìm kiếm học sinh theo mã và cập nhật thông tin học sinh. Mỗi học sinh được lưu trữ trong một cây tìm kiếm nhị phân, với student_id làm khóa.
Lời giải bài tập Chuyên đề Tin 12 Bài 8: Thực hành cây tim kiếm nhị phân hay, ngắn gọn khác:
Xem thêm lời giải bài tập Chuyên đề học tập Tin học 12 Kết nối tri thức hay, ngắn gọn khác:
Chuyên đề Tin học 12 Bài 9: Các thuật toán duyệt trên cây tìm kiếm nhị phân
Chuyên đề Tin học 12 Bài 10: Thực hành tổng hợp với cây tìm kiếm nhị phân
Xem thêm các tài liệu học tốt lớp 12 hay khác:
- Giải Chuyên đề Tin học 12 Kết nối tri thức
- Giải Chuyên đề Tin học 12 Chân trời sáng tạo
- Giải Chuyên đề Tin học 12 Cánh diều
- Giải lớp 12 Kết nối tri thức (các môn học)
- Giải lớp 12 Chân trời sáng tạo (các môn học)
- Giải lớp 12 Cánh diều (các môn học)
Sách VietJack thi THPT quốc gia 2025 cho học sinh 2k7:
- Giải Tiếng Anh 12 Global Success
- Giải sgk Tiếng Anh 12 Smart World
- Giải sgk Tiếng Anh 12 Friends Global
- Lớp 12 Kết nối tri thức
- Soạn văn 12 (hay nhất) - KNTT
- Soạn văn 12 (ngắn nhất) - KNTT
- Giải sgk Toán 12 - KNTT
- Giải sgk Vật Lí 12 - KNTT
- Giải sgk Hóa học 12 - KNTT
- Giải sgk Sinh học 12 - KNTT
- Giải sgk Lịch Sử 12 - KNTT
- Giải sgk Địa Lí 12 - KNTT
- Giải sgk Giáo dục KTPL 12 - KNTT
- Giải sgk Tin học 12 - KNTT
- Giải sgk Công nghệ 12 - KNTT
- Giải sgk Hoạt động trải nghiệm 12 - KNTT
- Giải sgk Giáo dục quốc phòng 12 - KNTT
- Giải sgk Âm nhạc 12 - KNTT
- Giải sgk Mĩ thuật 12 - KNTT
- Lớp 12 Chân trời sáng tạo
- Soạn văn 12 (hay nhất) - CTST
- Soạn văn 12 (ngắn nhất) - CTST
- Giải sgk Toán 12 - CTST
- Giải sgk Vật Lí 12 - CTST
- Giải sgk Hóa học 12 - CTST
- Giải sgk Sinh học 12 - CTST
- Giải sgk Lịch Sử 12 - CTST
- Giải sgk Địa Lí 12 - CTST
- Giải sgk Giáo dục KTPL 12 - CTST
- Giải sgk Tin học 12 - CTST
- Giải sgk Hoạt động trải nghiệm 12 - CTST
- Giải sgk Âm nhạc 12 - CTST
- Lớp 12 Cánh diều
- Soạn văn 12 Cánh diều (hay nhất)
- Soạn văn 12 Cánh diều (ngắn nhất)
- Giải sgk Toán 12 Cánh diều
- Giải sgk Vật Lí 12 - Cánh diều
- Giải sgk Hóa học 12 - Cánh diều
- Giải sgk Sinh học 12 - Cánh diều
- Giải sgk Lịch Sử 12 - Cánh diều
- Giải sgk Địa Lí 12 - Cánh diều
- Giải sgk Giáo dục KTPL 12 - Cánh diều
- Giải sgk Tin học 12 - Cánh diều
- Giải sgk Công nghệ 12 - Cánh diều
- Giải sgk Hoạt động trải nghiệm 12 - Cánh diều
- Giải sgk Giáo dục quốc phòng 12 - Cánh diều
- Giải sgk Âm nhạc 12 - Cánh diều