ภาพรวม
บทความนี้แสดงวิธีตรวจสอบว่าแอรเรย์ที่กำหนด เป็นลำดับการเดินทาง Inorder ของ Binary Search Tree (BST) หรือไม่ คุณสมบัติสำคัญของ BST Inorder traversal คือ ให้ค่าตามลำดับจากน้อยไปมาก (strictly increasing)
อัลกอริทึม
- ถ้าแอรเรย์ว่างหรือมี 1 元素 คืนค่า True
- ตรวจสอบว่าแต่ละ元素 มีค่าน้อยกว่า元素 ถัดไปหรือไม่ (
nums[i-1] < nums[i]) - ถ้าพบค่าที่ไม่เพิ่มขึ้น คืนค่า False
ตัวอย่างโค้ด Python
def solve(nums):
size = len(nums)
if size == 0 or size == 1:
return True
for i in range(1, size):
if nums[i-1] > nums[i]:
return False
return True
nums = [5, 8, 15, 18, 20, 26, 39]
print(solve(nums)) # True
ผลลัพธ์
True
คำอธิบายเพิ่มเติม
เนื่องจาก Inorder traversal ของ BST ให้ลำดับเรียงจากน้อยไปมาก การตรวจสอบเพียงแค่ว่าแอรเรย์เรียงเพิ่มขึ้นอย่างเคร่งครัด (strictly increasing) ก็เพียงพอแล้ว ไม่ต้องสร้างต้นไม้จริง