文章目录
- 题目描述
- 解题思路
- 代码
题目描述
给定一个二叉树的 根节点 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
解题思路
可以采用层序遍历的方法解决这个问题,下面代码中注释了
代码
class Solution {
//使用层序遍历,每遍历到新的一层的时候就更新一下结果为每层的第一个节点
//最后结果保存的就是最左下角的节点
public int findBottomLeftValue(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<>();
int result = 0;
if (root==null){
return 0;
}
queue.offer(root);
while (!queue.isEmpty()){
int size = queue.size();
for (int i = 0; i < size; i++) {
TreeNode node = queue.poll();
//如果是这一层的第一个节点就保留一下
if (i==0){
result = node.val;
}
if (node.left!=null){
queue.offer(node.left);
}
if (node.right!=null){
queue.offer(node.right);
}
}
}
return result;
}
}