Python程式檢查二叉樹中所有葉子節點是否都在同一層
假設我們有一個二叉樹,我們需要檢查所有葉子節點是否都在同一層。
所以,如果輸入類似於
那麼輸出將為 True
為了解決這個問題,我們將遵循以下步驟:
定義一個函式 dfs()。它將接收根節點和深度 d 作為引數。
如果根節點不為空,則
如果根節點的左子節點和右子節點都為空,則
將 d 新增到 depth 列表的末尾。
否則,
dfs(根節點的左子節點, d + 1)
dfs(根節點的右子節點, d + 1)
在主方法中,執行以下操作:
depth := 一個新的列表
dfs(根節點, 0)
當 depth 列表中只有一個值時返回 true。
讓我們看一下下面的實現,以便更好地理解:
示例
class TreeNode: def __init__(self, value): self.val = value self.left = None self.right = None class Solution: def solve(self, root): self.depth = [] self.dfs(root, 0) return len(set(self.depth)) == 1 def dfs(self, root, depth): if root: if not root.left and not root.right: self.depth.append(depth) else: self.dfs(root.left, depth + 1) self.dfs(root.right, depth + 1) ob = Solution() root = TreeNode(5) root.left = TreeNode(4) root.left.left = TreeNode(2) root.right = TreeNode(10) root.right.left = TreeNode(7) root.right.right = TreeNode(15) print(ob.solve(root))
輸入
root = TreeNode(5) root.left = TreeNode(4) root.left.left = TreeNode(2) root.right = TreeNode(10) root.right.left = TreeNode(7) root.right.right = TreeNode(15)
輸出
True
廣告