1. 程式人生 > >leet code Binary Tree Level Order Traversal II 層次遍歷二叉樹

leet code Binary Tree Level Order Traversal II 層次遍歷二叉樹

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