Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าแอรเรย์เป็น Inorder Traversal ของ BST หรือไม่ใน Python

ภาพรวม

บทความนี้แสดงวิธีตรวจสอบว่าแอรเรย์ที่กำหนด เป็นลำดับการเดินทาง Inorder ของ Binary Search Tree (BST) หรือไม่ คุณสมบัติสำคัญของ BST Inorder traversal คือ ให้ค่าตามลำดับจากน้อยไปมาก (strictly increasing)

อัลกอริทึม

  1. ถ้าแอรเรย์ว่างหรือมี 1 元素 คืนค่า True
  2. ตรวจสอบว่าแต่ละ元素 มีค่าน้อยกว่า元素 ถัดไปหรือไม่ (nums[i-1] < nums[i])
  3. ถ้าพบค่าที่ไม่เพิ่มขึ้น คืนค่า 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) ก็เพียงพอแล้ว ไม่ต้องสร้างต้นไม้จริง