python-018Đọc toàn bộ đề miễn phí

Kiểm tra tính hợp lệ của Cây nhị phân tìm kiếm

Trong hệ thống chỉ mục tìm kiếm tài liệu của AI Empire Academy, dữ liệu chỉ mục được cấu trúc dưới dạng Cây nhị phân tìm kiếm (BST). Một cây nhị phân được coi là BST hợp lệ nếu và…

PythonNâng cao25 phút

Tiến độ của tôi ở bài này

Điểm được lưu vào tài khoản sau khi chấm bài.

Đang tải điểm của bạn…

Kiến thức và chủ đề

treesbinary search treerecursiontree traversal

Kiến thức tiên quyết: tree node, recursion trees, bst properties.

Nội dung đề bài

Mục tiêu kiến thức

  • Hiểu định nghĩa đầy đủ của Cây nhị phân tìm kiếm (BST): mọi nút trong cây con bên trái phải nhỏ hơn nút gốc, và mọi nút trong cây con bên phải phải lớn hơn nút gốc.
  • Nhận diện sai lầm phổ biến: chỉ so sánh cục bộ giữa nút cha và hai con trực tiếp.
  • Sử dụng kỹ thuật truyền cận (min_val, max_val) trong đệ quy duyệt cây.

Mô tả bài toán

Trong hệ thống chỉ mục tìm kiếm tài liệu của AI Empire Academy, dữ liệu chỉ mục được cấu trúc dưới dạng Cây nhị phân tìm kiếm (BST). Một cây nhị phân được coi là BST hợp lệ nếu và chỉ nếu:

  • Cây con bên trái của một nút chỉ chứa các nút có giá trị nhỏ hơn nghiêm ngặt giá trị của nút đó.
  • Cây con bên phải của một nút chỉ chứa các nút có giá trị lớn hơn nghiêm ngặt giá trị của nút đó.
  • Cả hai cây con trái và phải đều phải là cây nhị phân tìm kiếm hợp lệ.
  • Cây rỗng (None) được coi là BST hợp lệ.

Cho một cây nhị phân với nút gốc root. Hãy viết hàm is_valid_bst(root: TreeNode | None) -> bool kiểm tra xem cây có phải là BST hợp lệ hay không.

Lớp TreeNode được định nghĩa sẵn như sau:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

Input

Nút gốc root của cây nhị phân (TreeNode hoặc None).

Output

Trả về giá trị boolean True hoặc False.

Ràng buộc

  • Số lượng nút trong cây từ 0 đến 104.
  • -231 ≤ Node.val ≤ 231 - 1.
  • Thời gian chạy tối đa: 1000ms.
  • Giới hạn bộ nhớ: 256MB.

Ví dụ 1

Input

Cây `[2, 1, 3]` (Gốc 2, con trái 1, con phải 3).

Output

`True`

Ví dụ 2

Input

Cây `[5, 1, 4, None, None, 3, 6]` (Gốc 5, con phải 4 có con trái 3 và con phải 6).

Output

`False`

Giải thích

Nút gốc là 5, nhưng nút 4 ở cây con bên phải lại nhỏ hơn 5 (và nút 3 cũng nhỏ hơn 5), vi phạm tính chất BST.

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.