https://leetcode.cn/problems/find-bottom-left-tree-value/
给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。
假设二叉树中至少有一个节点。
示例 1:
输入: root = [2,1,3]
输出: 1
class Solution:
def findBottomLeftValue(self, root: Optional[TreeNode]) -> int:
# 深度优先搜索
curval, curheight = 0, 0
def traverse(node, height):
nonlocal curval, curheight
if not node:
return
height += 1
traverse(node.left, height)
traverse(node.right, height)
if height > curheight:
curheight = height
curval = node.val
traverse(root, 0)
return curval
# 广度优先搜索
# 使用广度优先搜索遍历每一层的节点。
# 在遍历一个节点时,需要先把它的非空右子节点放入队列,然后再把它的非空左子节点放入队列,
# 这样才能保证从右到左遍历每一层的节点。广度优先搜索所遍历的最后一个节点的值就是最底层最左边节点的值。
# from collections import deque
# result = 0
# q = deque([root])
# while q:
# node = q.popleft()
# if node.right:
# q.append(node.right)
# if node.left:
# q.append(node.left)
# result = node.val
# return result