给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。
假设二叉树中至少有一个节点。
分析:思路一开始还是考虑使用递归还是迭代,虽然都可以做,但从本题来开,使用层序遍历的迭代法无疑思路会清晰一些,因为使用递归的话,无法确定是否当前值就是左下角的值,因为有可能不是最后一层就结束了。
层序遍历:
public int findBottomLeftValue(TreeNode root) {
Queue
if(root==null) return 0;
queue.offer(root);
int ret=root.val;
while(!queue.isEmpty()){
int size=queue.size();
ret = queue.peek().val; //在每层遍历的时候记录第一个值用来更新ret
while(size>0){
TreeNode tmp = queue.poll();
if(tmp.left!=null) queue.offer(tmp.left);
if(tmp.right!=null) queue.offer(tmp.right);
size—;
}
}
return ret;
}
