#BST0000017. Cây này có phải BST? (Is This a Binary Search Tree?)
Cây này có phải BST? (Is This a Binary Search Tree?)
Cây này có phải BST? (Is This a Binary Search Tree?)
Nguồn: HackerRank
Phiên bản: Phước Hưng OJ Extended
Đề bài
Cho một cây nhị phân. Mỗi nút mang một khóa số nguyên.
Cây là một cây tìm kiếm nhị phân (BST) nghiêm ngặt khi, với mọi nút có khóa :
- mọi khóa trong toàn bộ cây con trái đều nhỏ hơn ;
- mọi khóa trong toàn bộ cây con phải đều lớn hơn .
Điều kiện được xét trên toàn bộ cây con, không chỉ trên hai cạnh nối trực tiếp từ một nút tới các con của nó. Do đó một khóa nằm sâu hơn nhiều mức vẫn phải thỏa mọi giới hạn do các tổ tiên của nó tạo ra.
Hãy xác định cây đã cho có thỏa định nghĩa BST nghiêm ngặt hay không.
Input
Dòng đầu chứa hai số nguyên và , trong đó là số nút và là chỉ số gốc. Nếu thì .
Nếu , tiếp theo có dòng. Dòng thứ mô tả nút bằng ba giá trị key left right, trong đó left và right là chỉ số con trái và con phải. Chỉ số biểu thị không có nút con; các chỉ số khác nằm trong .
Dữ liệu được bảo đảm mô tả một cây nhị phân hợp lệ có gốc : cây liên thông, không có chu trình và mỗi nút khác gốc có đúng một cha. Khóa các nút có thể làm cây vi phạm điều kiện BST.
Output
In YES nếu cây là BST nghiêm ngặt; ngược lại in NO.
Subtask
Subtask 1 (20 điểm): .
Subtask 2 (30 điểm): .
Subtask 3 (50 điểm): .
Trong tất cả các subtask, khóa của mỗi nút là số nguyên có dấu 64-bit.
Ví dụ
Input
5 1
8 2 3
3 4 5
10 0 0
1 0 0
9 0 0
Output
NO
Giải thích
Nút có khóa và nằm trong cây con trái của gốc có khóa . Mọi khóa trong cây con trái của phải nhỏ hơn , nhưng .
Vì vậy cây không phải BST nghiêm ngặt và chương trình in NO.