题目链接:513. 找树左下角的值
深度优先搜索,搜到最深的那一层,最左侧的元素。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def findBottomLeftValue(self, root: Optional[TreeNode]) -> int:
assert root is not None
def dfs(node: TreeNode, depth: int) -> Tuple[TreeNode, int]:
ln, ld = dfs(node.left, depth + 1) if node.left else (node, depth)
rn, rd = dfs(node.right, depth + 1) if node.right else (node, depth)
if rd > ld:
return rn, rd
else:
return ln, ld
node, _ = dfs(root, 0)
return node.val