513. 找树左下角的值

exiaohu 于 2022-06-22 发布

题目链接: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