Nhằm giúp ace nâng cao kỹ năng, kiến thức lập trình, dễ dàng ghi nhớ và hiểu sâu hơn khi đã học lý thuyết về Binary Tree tại series tự học cấu trúc dữ liệu và giải thuật của cafedev. Sau đây là các bài tập có full lời giải và hướng dẫn giải cực chi tiết cho ace trên nhiều ngôn ngữ lập trình khác nhau.

Bài 1: Kiểm tra xem hai cây nhị phân có giống nhau hay không dùng Đệ quy or lặp lại

Viết một thuật toán hiệu quả để kiểm tra xem hai cây nhị phân có giống nhau hay không. tức là nếu chúng có cấu trúc giống nhau thì nội dung của chúng cũng giống nhau.

Gợi ý: Ý tưởng là duyệt qua cả hai cây và so sánh giá trị tại nút gốc của chúng. Nếu giá trị khớp, chúng tôi kiểm tra đệ quy xem cây con bên trái của cây thứ nhất có giống với cây con bên trái của cây thứ hai và cây con bên phải của cây thứ nhất có trùng với cây con bên phải của cây thứ hai hay không. Nếu giá trị tại nút gốc của chúng khác nhau, cây vi phạm thuộc tính dữ liệu. Nếu tại bất kỳ thời điểm nào trong đệ quy, cây đầu tiên trống cây thứ hai không trống hoặc cây thứ hai trống cây thứ nhất không rỗng, các cây vi phạm thuộc tính cấu trúc và chúng không thể giống nhau.

Hướng dẫn cách xem và tải tài liệu từ trang cafedev tại đây.


Bài giải vòng lặp

Bài giải đệ quy

Bài 2:  Xóa cây nhị phân dùng Lặp lại và đệ quy

Cho một cây nhị phân, hãy viết một thuật toán hiệu quả để xóa toàn bộ cây nhị phân.

Chương trình nên khử phân bổ mọi nút đơn có trong cây, không chỉ thay đổi tham chiếu của nút gốc thành null.

Gợi ý: Ý tưởng là đi ngang cây theo thứ tự sau và xóa cây con trái và phải của một nút trước khi xóa chính nút đó. Lưu ý rằng chúng tôi không thể đi ngang qua cây theo cách đặt hàng trước hoặc đặt hàng trước vì chúng tôi không thể xóa cây gốc trước khi xóa cây con của nó


Giải bài với đệ quy

Giải bài với lặp lại

Bài 3: In chế độ xem bên trái của cây nhị phân

Cho một cây nhị phân, hãy viết một thuật toán hiệu quả để in ra chế độ xem bên trái của cây nhị phân

Ví dụ: chế độ xem bên trái của cây nhị phân bên dưới là 1, 2, 4, 7


Giải bài

Nguồn và Tài liệu tiếng anh tham khảo:

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!