Python 檢查二叉樹是否為 BST 的程式


假設我們有一個二叉樹;我們需要檢查它是否為二叉搜尋樹。眾所周知,BST 具有以下屬性:

  • 其所有左子樹節點都小於當前節點值
  • 其所有右子樹節點都大於當前節點值
  • 這些屬性對所有節點遞迴成立

因此,如果輸入類似於

則輸出將為 True

為了解決這個問題,我們將遵循以下步驟:

  • x := 樹元素的中序遍歷序列列表
  • 如果 x 已排序,則
    • 返回 true
  • 返回 false

讓我們看一下以下實現以更好地理解:

示例

 線上演示

class TreeNode:
   def __init__(self, data, left = None, right = None):
      self.data = data
      self.left = left
      self.right = right
class Solution:
   def solve(self, root):
      def inorder(root,l):
         if root is None:
            return
            inorder(root.left,l) l.append(root.data)
            inorder(root.right,l)
            l = []
            inorder(root,l)
         return l == sorted(l)
ob = Solution()
root = TreeNode(5)
root.left = TreeNode(1)
root.right = TreeNode(9) root.right.left = TreeNode(7) root.right.right = TreeNode(10) root.right.left.left = TreeNode(6) root.right.left.right = TreeNode(8) print(ob.solve(root))

輸入

root = TreeNode(5)
root.left = TreeNode(1)
root.right = TreeNode(9)
root.right.left = TreeNode(7)
root.right.right = TreeNode(10)
root.right.left.left = TreeNode(6)
root.right.left.right = TreeNode(8)

輸出

True

更新於: 2020年10月6日

563 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告