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