Я пытаюсь понять, почему мое решение найти минимальную глубину двоичного дерева не работает, когда одна сторона дерева равна None
.
Здесь уже задан вопрос по этому вопросу - Почему мое решение не работает, чтобы найти минимальную глубину двоичного дерева? , но ответ по-прежнему не дает мне понять.
Мой код реализации такой, как показано ниже.
class Solution:
def minDepth(self, root: 'TreeNode') -> 'int':
if root is None:
return 0
left = self.minDepth(root.left)
right = self.minDepth(root.right)
min_depth = min(left, right)
return 1 + min_depth
Когда последняя строка модифицируется следующим образом, она работает.
if left == 0 or right == 0:
return 1 + left + right
return 1 + min_depth
Мой вопрос: зачем вам проверять, является ли одна сторона None
или нет, если в конце вывсе равно суммируйте их все - return 1 + left + right
?
Контрольный пример -
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
# [1, 2]
root = TreeNode(1)
root.left = TreeNode(2)
solution = Solution()
solution.minDepth(root)
Мой код возвращает 1
, где он должен возвращать 2
.
EDIT Глубина дерева определяется как количество узлов в кратчайшем пути от корня дерева до листового узла.