513.找树左下角的值

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

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

示例 1:

img

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

示例 2:

img

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

Solution

层序遍历,从右到左的话,最后遍历到的不就是左下角的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public int findBottomLeftValue(TreeNode root) {
TreeNode node = root; // 使用node变量来跟踪当前正在处理的节点。
Queue<TreeNode> q = new ArrayDeque<>(); // 创建一个队列来进行层序遍历。
q.add(root); // 将根节点添加到队列中。

while (!q.isEmpty()) { // 当队列不为空时,持续处理。
node = q.poll(); // 从队列中取出一个节点进行处理。

// 先将右子节点添加到队列中,然后是左子节点。
// 这样做确保最后遍历到的是每一层的最左侧节点。
if (node.right != null) {
q.add(node.right); // 如果存在右子节点,将其添加到队列中。
}
if (node.left != null) {
q.add(node.left); // 如果存在左子节点,将其添加到队列中。
}
}
// 当队列为空时,node将指向最后处理的节点,即最底层最左边的节点。
return node.val; // 返回该节点的值。
}