Lý lịch
Một cây nhị phân là một cây bắt nguồn mà mỗi nút có ít nhất hai đứa con.
Một cây nhị phân được dán nhãn là một cây nhị phân mà mỗi nút được dán nhãn với một số nguyên dương; hơn nữa, tất cả các nhãn là khác biệt .
Một BST (cây tìm kiếm nhị phân) là một cây nhị phân được dán nhãn trong đó nhãn của mỗi nút lớn hơn các nhãn của tất cả các nút trong cây con trái của nó, và nhỏ hơn so với các nhãn của tất cả các nút trong cây con phải của nó. Chẳng hạn, sau đây là BST:
Truyền tải theo thứ tự trước của cây nhị phân có nhãn được xác định bởi mã giả sau đây.
function preorder(node)
if node is null then
return
else
print(node.label)
preorder(node.left)
preorder(node.right)
Xem hình ảnh sau đây để có được trực giác tốt hơn:
Các đỉnh của cây nhị phân này được in theo thứ tự sau:
F, B, A, D, C, E, G, I, H
Bạn có thể đọc thêm về các BST tại đây và biết thêm về dịch vụ đặt hàng trước tại đây .
Thử thách
Đưa ra một danh sách các số nguyên , nhiệm vụ của bạn là xác định xem có BST nào có giao dịch đặt hàng trước in chính xác không .
Đầu vào
- Một danh sách không trống của các số nguyên dương khác biệt .
- Tùy chọn, chiều dài của .
Đầu ra
- Một truthy giá trị nếu là traversal đặt hàng trước của một số BST.
- Một giá trị falsey khác.
Quy tắc
- Quy tắc chuẩn cho đệ trình hợp lệ , I / O , sơ hở áp dụng.
- Đây là môn đánh gôn , vì vậy giải pháp ngắn nhất (tính bằng byte) sẽ thắng. Như thường lệ, đừng để các giải pháp ngắn một cách lố bịch trong các ngôn ngữ golf không khuyến khích bạn đăng câu trả lời dài hơn bằng ngôn ngữ bạn chọn.
- Đây không phải là một quy tắc, nhưng câu trả lời của bạn sẽ được nhận tốt hơn nếu nó bao gồm một liên kết để kiểm tra giải pháp và giải thích về cách thức hoạt động của nó.
Ví dụ
Input ----> Output
[1] ----> True
[1,2,3,4] ----> True
[5,1,4,2,3] ----> True
[5,4,3,2,1,6,7,8,9] ----> True
[4,2,1,3,6,5,7] ----> True
[8,3,1,6,4,7,10,14,13] ----> True
[2,3,1] ----> False
[6,3,2,4,5,1,8,7,9] ----> False
[1,2,3,4,5,7,8,6] ----> False
[3,1,4,2] ----> False
Kiểm tra liên kết này (lịch sự của Kevin Cruijssen ) để có cái nhìn trực quan về các ví dụ.