Python 檢查二叉樹是否完整的程式
假設我們有一棵二叉樹;我們必須檢查這是否是一棵完全二叉樹。眾所周知,在完全二叉樹中,除了最後一層之外,所有層都填充了節點,並且最後一層中的所有節點都儘可能靠左。
因此,如果輸入如下所示:
則輸出將為 True
為了解決這個問題,我們將遵循以下步驟:
q := 一個雙端佇列
將根節點插入 q 的末尾
flag := False
當 q 不為空時,執行以下操作:
temp := 從 q 的左側刪除的元素
如果 temp 為空,則
flag := True
否則,當 flag 設定且 temp 不為空時,則
返回 False
否則,
將 temp 的左子節點插入 q 的末尾
將 temp 的右子節點插入 q 的末尾
返回 True
讓我們看看下面的實現,以便更好地理解:
示例
from collections import deque 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): q = deque() q.append(root) flag = False while q: temp = q.popleft() if not temp: flag = True elif flag and temp: return False else: q.append(temp.left) q.append(temp.right) return True ob = Solution() root = TreeNode(9) root.left = TreeNode(7) root.right = TreeNode(10) root.left.left = TreeNode(6) root.left.right = TreeNode(8) print(ob.solve(root))
輸入
root = TreeNode(9) root.left = TreeNode(7) root.right = TreeNode(10) root.left.left = TreeNode(6) root.left.right = TreeNode(8)
輸出
True
廣告