Я пытаюсь написать рекурсивную функцию для извлечения максимальной глубины двоичного дерева поиска. Я не совсем уверен в разнице между этими двумя реализациями. Разве они оба не должны возвращать один и тот же результат?
Код 1:
def maxDepth(self, root: TreeNode) -> int:
l = r = 0
if root:
print(root.val)
if root.left:
print(f"In left subtree for root {root.val}")
l = self.maxDepth(root.left)
print(f"l: {l} r: {r}")
if root.right:
print(f"In right subtree for root {root.val}")
r = self.maxDepth(root.right)
print(f"l: {l} r: {r}")
else:
print("No subtree")
return max(l,r) + 1
Код 2:
def maxDepth(self, root: TreeNode) -> int:
l = r = 0
if root:
print(root.val)
if root.left:
print(f"In left subtree for root {root.val}")
l = self.maxDepth(root.left) + 1
print(f"l: {l} r: {r}")
if root.right:
print(f"In right subtree for root {root.val}")
r = self.maxDepth(root.right) + 1
print(f"l: {l} r: {r}")
else:
print("No subtree")
return max(l,r)