Medium
Smallest Subtree with all the Deepest Nodes — Python
Full explanation · Time O(n) · Space O(h)
# Time: O(n)
# Space: O(h)
import collections
class Solution(object):
def subtreeWithAllDeepest(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
Result = collections.namedtuple("Result", ("node", "depth"))
def dfs(node):
if not node:
return Result(None, 0)
left, right = dfs(node.left), dfs(node.right)
if left.depth > right.depth:
return Result(left.node, left.depth+1)
if left.depth < right.depth:
return Result(right.node, right.depth+1)
return Result(node, left.depth+1)
return dfs(root).node