[SQL] Truy vấn cây nhị phân

Sunday, April 30, 2023
Edit this post


Cho bảng BST bao gồm 2 cột N và P: cột N đại diện cho giá trị của node trong cây nhị phân, và P chứa giá trị của node cha của N. Viết câu truy vấn liệt kê ra loại (type) của node trong cây nhị phân theo quy luật như sau:

"Root" - nếu node là root node.
"Leaf" - nếu node là node lá.
"Inner" - nếu không phải 2 trường hợp trên.

Ví dụ bảng BST:

Ví dụ minh họa:

Kết quả:

1 Leaf
2 Inner
3 Leaf
5 Root
6 Leaf
8 Inner
9 Leaf

Để giải được bài tập này, chúng ta cần sử dụng câu lệnh CASE, tương tự như lệnh switch-case trong các ngôn ngữ lập trình phổ biến. Từ bảng ví dụ ở trên, dễ thấy một node là "Root" nếu P=null, là "Inner" nếu giá trị của N không xuất hiện trong cột P. Dựa vào logic đã được phân tích, ta có đáp án bên dưới:

SELECT N,
CASE
    WHEN P IS NULL THEN "Root"
    WHEN N IN (SELECT DISTINCT P FROM BST) THEN "Inner"
    ELSE "Leaf"
END
FROM BST
ORDER BY N

Bài tập trên được lấy từ trang HackerRank.com với độ khó Medium. Để tìm hiểu nhiều hơn các bài tập khác, các bạn hãy đăng ký một tài khoản trên trang này và kết nối cùng tôi nhé.

.
Xin vui lòng chờ đợi
Dữ liệu bài viết đang được tải về

BÌNH LUẬN

Cảm ơn bạn đã đọc bài viết của Cuộc Sống Tối Giản. Đây là một blog cá nhân, được lập ra nhằm mục đích lưu trữ và chia sẻ mọi thứ hay ho theo chủ quan của chủ sở hữu. Có lẽ vì vậy mà bạn sẽ thấy blog này hơi (rất) tạp nham. Mọi chủ đề đều có thể được tìm thấy ở đây, từ tâm sự cá nhân, kinh nghiệm sống, phim ảnh, âm nhạc, lập trình... Phần lớn các bài đăng trong blog này đều được tự viết, trừ các bài có tag "Sponsored" là được tài trợ, quảng cáo, hoặc sưu tầm. Để ủng hộ blog, bạn có thể share những bài viết hay tới bạn bè, người thân, hoặc có thể follow Kênh YouTube của chúng tôi. Nếu cần liên hệ giải đáp thắc mắc hoặc đặt quảng cáo, vui lòng gửi mail theo địa chỉ songtoigianvn@gmail.com. Một lần nữa xin được cảm ơn rất nhiều!!!
© Copyright by CUỘC SỐNG TỐI GIẢN
Loading...