剑指 Offer II 045. 二叉树最底层最左边的值

题目

给定一个二叉树的 根节点 root,请找出该二叉树的最底层最左边节点的值。

假设二叉树中至少有一个节点。

示例 1:

flowchart TB
2((2)) --- 1((1))
2 --- 3((3))

输入: root = [2,1,3]
输出: 1

示例 2:

flowchart TB
1((1)) --- 2((2))
1 --- 3((3))
2 --- 4((4))
3 --- 5((5))
3 --- 6((6))
5 --- 7((7))

输入: [1,2,3,4,null,5,6,null,null,7]
输出: 7

提示:

  • 二叉树的节点个数的范围是 [1,104]
  • -231 <= Node.val <= 231 - 1

注意:本题与主站513题相同

题解

public int findBottomLeftValue(TreeNode root) {
    int result = 0;

    // 层序遍历队列
    Queue<TreeNode> queue = new ArrayDeque<>();
    queue.offer(root);

    int size;
    TreeNode t;
    while (!queue.isEmpty()) {
        size = queue.size();

        for (int i = 0; i < size; i++) {
            t = queue.poll();
            // 队列头为每层的最左侧元素
            if (i == 0) {
                result = t.val;
            }

            // 左右树入队
            if (Objects.nonNull(t.left)) {
                queue.offer(t.left);
            }
            if (Objects.nonNull(t.right)) {
                queue.offer(t.right);
            }
        }
    }

    return result;
}