给定一个二叉树,在树的最后一行找到最左边的值。

示例 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;
	}

如图中注释掉的代码 可以看出 还可以求出最后一行最右边的节点