来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-bottom-left-tree-value
题意:
给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。
假设二叉树中至少有一个节点。
示例 1:
输入: root = [2,1,3]
输出: 1
示例 2:
输入: [1,2,3,4,null,5,6,null,null,7]
输出: 7
提示:
二叉树的节点个数的范围是 [1,104]
-231 <= Node.val <= 231 - 1
思路:
这道题用层序遍历法很容易就解决了。做了很多二叉树的题,只能说,层序遍历法真的很好用。二叉树的层序遍历可以看这篇文章LeetCode上10道关于二叉树层序遍历的题目,做完基本上就对二叉树的层序遍历写法了然于胸。
这道题在每遍历新的一层的时候把当前层的第一个数记录下来就行了,直到遍历完所有的节点后,当前记录的值就是最后一层的最左边节点的值。
本题Java代码:
class Solution {
public int findBottomLeftValue(TreeNode root) {
Deque<TreeNode> deque = new LinkedList<>();
deque.offer(root);
int ans = 0;
while (!deque.isEmpty()) {
int size = deque.size();
for (int i = 0; i < size; i++) {
TreeNode node = deque.poll();
if (i == 0)//关键代码在这里!!!
ans = node.val;
if (node.left != null)
deque.offer(node.left);
if (node.right != null)
deque.offer(node.right);
}
}
return ans;
}
}