0513.找树左下角的值
描述
给定一个二叉树,在树的最后一行找到最左边的值。
实例
输入:
2
/ \
1 3
输出:
1
输入:
1
/ \
2 3
/ / \
4 5 6
/
7
输出:
7
注意
您可以假设树(即给定的根节点)不为 NULL。
题解
layList1
记录当前层所有的节点layList2
记录下一层所有的节点getNextLayNodes
用于获得下一层的所有节点- 如果
getNextLayNodes
返回的节点数为0
,那就输出当前层的第一个节点
public int findBottomLeftValue(TreeNode root) {
TreeNode nowNode = root;
Queue<TreeNode> queue = new LinkedList<>();
((LinkedList<TreeNode>) queue).add(root);
ArrayList<TreeNode> layList1;//该层所有节点列表
ArrayList<TreeNode> layList2;//下一层所有节点列表
ArrayList<TreeNode> tmpList;
layList1 = new ArrayList<>();
layList1.add(root);
while (true){
layList2 = getNextLayNodes(layList1);
if (layList2.isEmpty()){
return layList1.get(0).val;
} else
layList1 = layList2;
}
}
public ArrayList<TreeNode> getNextLayNodes(ArrayList<TreeNode> layList1){
ArrayList<TreeNode> layList2 = new ArrayList<>();
for(TreeNode node:layList1){
if (node.left != null)
layList2.add(node.left);
if (node.right != null)
layList2.add(node.right);
}
return layList2;
}