题目
给定一个二叉树,在树的最后一行找到最左边的值。
示例 1:
示例 2:
思路
审题:题目中说了,左下角的值是树的最后一行的最左边(第一个) 的值
用层序遍历比较简单,用递归反而麻烦一点。
注意:二叉树的前中后序遍历都有递归和迭代两种方法,层序遍历比较简单,不需要使用递归,借助队列实现迭代就行。
迭代法:
只需要使用层序遍历模板,再额外记录一下最后一行第一个节点就可以了
class Solution {
public int findBottomLeftValue(TreeNode root){
Queue<TreeNode> deque = new LinkedList<>();
deque.offer(root);
int res = 0;
while(!deque.isEmpty()){
int size = deque.size();
for(int i = 0; i < size; i++){
TreeNode node = deque.poll();
if(i == 0){//记录最后一行第一个元素,外层的while循环负责找到最后一层,内层的for循环中通过设定i=0负责找到第一个元素
res = node.val;
}
if(node.left != null){
deque.offer(node.left);
}
if(node.right != null){
deque.offer(node.right);
}
}
}
return res;
}
}