📅  最后修改于: 2023-12-03 15:12:37.247000             🧑  作者: Mango
本文将介绍 GATE CS 2020 题库中的第 43 题,这道题目的主题是关于树和递归算法。
给定一个二叉树,对于该树的每个节点,找到离该节点最近的那个叶子节点,并返回该节点到叶子节点的路径长度。
输入的二叉树是一个根节点的引用。每个节点都包含一个指向左子节点和右子节点的指针。叶子节点没有左右子节点,其值为 null。
对于每个节点,输出其到最近的叶子节点的路径长度。
本题可以通过递归解决。首先,对于每个节点,可以通过递归找到其左右子树中离该节点最近的叶子节点。然后,将两个子树中离该节点最近的叶子节点的路径长度取最小值,并加上该节点到左右子树中离该节点最近的叶子节点的距离,即为该节点到最近的叶子节点的路径长度。
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def minDepth(self, root: TreeNode) -> int:
if not root:
return 0
left_depth = self.minDepth(root.left)
right_depth = self.minDepth(root.right)
if left_depth == 0 or right_depth == 0:
return max(left_depth, right_depth) + 1
return min(left_depth, right_depth) + 1
这道题目主要考察了递归算法的思想,我们需要找到子问题的解,然后将子问题的解组合起来得到原问题的解。在实现过程中,需要注意终止条件和对于空节点的处理。