Python程式:查詢樹的最左深度節點
假設我們有一棵二叉樹,我們需要找到最深節點的值。如果有多個最深節點,則返回最左邊的最深節點。
因此,如果輸入類似於
則輸出將為 4,因為 4 和 7 是最深的,但 4 是最左邊的。
為了解決這個問題,我們將遵循以下步驟:
queue := 一個包含一個節點(根節點)的佇列。
left_max := 根節點的值
當佇列大小 > 0 時,執行以下操作
level_size := 佇列的大小
對於 i 在 0 到 level_size 範圍內,執行以下操作
temp := 佇列中的第一個元素,並將其刪除
如果 i 等於 0,則
left_max := temp 的值
如果 temp 的左子節點非空,則
將 temp 的左子節點插入佇列的末尾
如果 temp 的右子節點非空,則
將 temp 的右子節點插入佇列的末尾
返回 left_max
讓我們看看下面的實現,以便更好地理解:
示例
class TreeNode: def __init__(self, value): self.val = value self.left = None self.right = None class Solution: def solve(self, root): queue = [root] left_max = root.val while len(queue) > 0: level_size = len(queue) for i in range(level_size): temp = queue.pop(0) if i == 0: left_max = temp.val if temp.left: queue.append(temp.left) if temp.right: queue.append(temp.right) return left_max ob = Solution() root = TreeNode(13) root.left = TreeNode(12) root.right = TreeNode(14) root.right.left = TreeNode(16) root.right.right = TreeNode(22) root.right.left.left = TreeNode(4) root.right.left.right = TreeNode(7) print(ob.solve(root))
輸入
root = TreeNode(13) root.left = TreeNode(12) root.right = TreeNode(14) root.right.left = TreeNode(16) root.right.right = TreeNode(22) root.right.left.left = TreeNode(4) root.right.left.right = TreeNode(7)
輸出
4
廣告