leet code 题目:https://leetcode.com/problems/binary-tree-level-order-traversal-ii/
层次遍历二叉树:
思路:使用队列层次遍历二叉树,
考点:
1.使用队列,先弹出队列对头,把队头元素的左节点和右节点加入队列。
2.保存元素,使用List 的add方法,每次在队头添加元素。
public static void main(String[] args) {
TreeNode treeNode1=new TreeNode(3);
TreeNode treeNode2=new TreeNode(9);
TreeNode treeNode3=new TreeNode(20);
TreeNode treeNode4=new TreeNode(15);
TreeNode treeNode5=new TreeNode(7);
treeNode1.left=treeNode2;
treeNode1.right=treeNode3;
treeNode3.left=treeNode4;
treeNode3.right=treeNode5;
List<List<Integer>> lists = levelOrderBottom(treeNode1);
for (List<Integer> list : lists) {
System.out.println(list);
}
}
public static List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> list=new ArrayList<>();
Queue<TreeNode> queue=new LinkedList<>();
if(root==null){
return list;
}
queue.offer(root);
while(!queue.isEmpty()){
int size = queue.size();
List<Integer> integerList=new ArrayList<>();
for(int i=0;i<size;i++){
TreeNode peek = queue.peek();
queue.poll();
if(peek.left!=null){
queue.offer(peek.left);
}
if(peek.right!=null){
queue.offer(peek.right);
}
integerList.add(peek.val);
}
list.add(0,integerList);
}
return list;
}