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
廣告