513. 找树左下角的值(层级遍历)
题目
给定一个二叉树,在树的最后一行找到最左边的值。
解题思路
用层级遍历,维护一个变量firstNode
来存放每一层的第一个节点。我们从左往右的层级便遍历,因为firstNode
是在循环里面,也就是每一次循环,即每一层:都会更新一次firstNode
。到最后一次更新,firstNode
保存的就是最后一层的第一个值,又因为是从左往右层级遍历,所以firstNode
最后存放的就是我们要的左下角的值
。
代码
class Solution {
public int findBottomLeftValue(TreeNode root) {
Queue<TreeNode> q=new LinkedList<>();
int firstNode=-1;
q.offer(root);
while(!q.isEmpty()){
int count=q.size();//该层节点的个数
for(int i=0;i<count;i++){
TreeNode cur=q.poll();
if(i==0){
firstNode=cur.val;//存放每一层的第一个节点,最后一次循环,这个值就是最后一层的第一个节点了。也就是最左边的值
}
if(cur.left!=null){
q.offer(cur.left);
}
if(cur.right!=null){
q.offer(cur.right);
}
}
}
return firstNode;
}
}