Làm sao để có thể duyệt/ sắp xếp lại cây nhị phân cân bằng theo kiểu dữ liệu khác

Em có 1 cây nhị tìm kiếm cân bằng có Node gồm: mã môn học, tên môn học
Em đã duyệt cây nhị phân này bằng mã môn học theo thứ tự tăng dần rồi. Bây giờ em muốn duyệt cây để có thể xuất ra theo thứ tự tên môn học tăng dần có được không ạ.
cách làm của em là chuyển cây nhị phân sang mảng rồi xuất ra. Nhưng em không muốn dùng mảng mà làm bằng cây nhị phân thì có được không ạ. nếu được thì phải làm sao ạ. Mấy bác giúp em với ạ

Cách duy nhất là dựng lại cây với key mới thôi.

3 Likes

phải dựng lại cây mới tức là thêm node vào cây nhị phân mới theo tên môn học hả bác? Do tên môn học có thể trùng nhau nên sợ là ko đc. Vậy là ko có cách duyệt nào để sắp xếp theo tên môn học à?

Vì tên môn học có thể trùng nhau, cậu nên dựng cây mới theo “tên môn học” + “mã môn học” (chèn trường unique vào cuối - các hệ quản trị cơ sở dữ liệu cũng thường build BTree index theo cách này).
Ví dụ:

Mã môn Tên môn Key
A123 CSDL CSDLA123
922B CSDL CSDL922B
1111 Algorithm Algorithm1111

Hope it helps!

4 Likes

Để dựng lại cây theo khóa mới, ta luôn xét các node lá của cây cũ, vì ngắt lá dễ hơn là cắt ngang cành.
Còn tạo ra hẳn 1 cây theo khóa mới thì duyệt cách nào cũng được.

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?