513. 找树左下角的值

给定一个二叉树,在树的最后一行找到最左边的值。

示例 1:

输入:

    2
   / \
  1   3

输出:
1

示例 2:

输入:

        1
       / \
      2   3
     /   / \
    4   5   6
       /
      7

输出:
7

注意: 您可以假设树(即给定的根节点)不为 NULL。

思路--BFS(广度优先遍历)

BFS的思路是是从上到下,从左到右追层遍历。
根据题目意思,是要取到最下面,最左边的元素。
只需要对BFS遍历改为从上到下保持不变, 但水平遍历方向改为从右到左即可。
这样,先上后下,先右后左,此策略走下去,最后一个元素必然是最下方最左边的元素,最后返回该节点node.val即可

python3解法

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def findBottomLeftValue(self, root: TreeNode) -> int:
        queue = [root]
        # 从上到下,从右向左遍历
        while queue:
            # 最后一个节点就是最左边的节点
            curNode = queue.pop(0)
            if curNode.right:
                queue.append(curNode.right)
            if curNode.left:
                queue.append(curNode.left)
        return curNode.val

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-bottom-left-tree-value
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

你可能感兴趣的:(513. 找树左下角的值)