给定一个二叉树,在树的最后一行找到最左边的值。
示例 1:
输入:
2
/ \
1 3
输出:
1
示例 2:
输入:
1
/ \
2 3
/ / \
4 5 6
/
7
输出:
注意: 您可以假设树(即给定的根节点)不为 NULL。
思路:
按照层序的遍历 用队列 每次得到当前行的第一个 保持更新
public static int findBottomLeftValue(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(root); //第一层第一个
int res = 0;
while(!queue.isEmpty()){
int size = queue.size();
for(int i = 0; i < size; i++){
TreeNode node = queue.poll();
if(i == 0) res = node.val; //每次得到当前行的第一个 左
// if(i==size-1) result = node.val; //每次得到当前行的最后一个 右
if(node.left!= null)
queue.add(node.left);
if(node.right!=null)
queue.add(node.right);
}
}
return res;
}
如图中注释掉的代码 可以看出 还可以求出最后一行最右边的节点