#BST0000018. Kiểm tra cây tìm kiếm nhị phân (Validate Binary Search Tree)
Kiểm tra cây tìm kiếm nhị phân (Validate Binary Search Tree)
Kiểm tra cây tìm kiếm nhị phân (Validate Binary Search Tree)
Nguồn: LeetCode
Phiên bản: Phước Hưng OJ Extended
Đề bài
Cho một cây nhị phân có nút. Một cây được gọi là BST hợp lệ khi đồng thời thỏa các điều kiện sau tại mọi nút có khóa :
- mọi khóa trong cây con trái đều nhỏ hơn ;
- mọi khóa trong cây con phải đều lớn hơn ;
- bản thân hai cây con cũng phải thỏa cùng định nghĩa.
Các bất đẳng thức là nghiêm ngặt, vì vậy hai nút có cùng khóa không thể cùng xuất hiện trong một BST hợp lệ.
Hãy xác định cây đã cho có phải BST hợp lệ hay không.
Input
Dòng đầu chứa hai số nguyên và , trong đó là chỉ số gốc.
Tiếp theo có dòng. Dòng thứ mô tả nút bằng ba giá trị key left right. left và right bằng nếu không có nút con tương ứng; nếu khác thì là chỉ số trong .
Dữ liệu được bảo đảm mô tả đúng một cây nhị phân liên thông, không có chu trình, có gốc .
Output
In YES nếu cây là BST hợp lệ; 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, .
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 nằm trong cây con trái của nút gốc có khóa . Điều kiện của BST yêu cầu mọi khóa trong toàn bộ cây con trái phải nhỏ hơn , nhưng .
Do đó cây không hợp lệ và output là NO.