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

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

    示例 1:
    image.png

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

    image.png

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

    提示:

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


    1. class Solution {
    2. /**
    3. 使用层序遍历,问题是如何知道是最后一层,只需要维护一个Boolean变量
    4. 当队列中右节点有孩子节点则肯定不是最后一层,
    5. 然后如果是最后一层就返回第一个节点的值
    6. */
    7. public int findBottomLeftValue(TreeNode root) {
    8. Deque<TreeNode> queue = new LinkedList<>();
    9. queue.addLast(root);
    10. TreeNode res = new TreeNode();
    11. while (!queue.isEmpty()) {
    12. int size = queue.size();
    13. boolean flag = false;
    14. //res总是记录每一层第一个值
    15. res = queue.peekFirst();
    16. while (size -- > 0) {
    17. TreeNode node = queue.peekFirst();
    18. if (node.left != null || node.right != null) {
    19. flag = true;
    20. if (node.left != null) queue.addLast(node.left);
    21. if (node.right != null) queue.addLast(node.right);
    22. }
    23. queue.pollFirst();
    24. }
    25. if (flag == false) return res.val;
    26. }
    27. return 0;
    28. }
    29. }