给定一个二叉树,在树的最后一行找到最左边的值。
示例 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;
}
如图中注释掉的代码 可以看出 还可以求出最后一行最右边的节点