leet code Binary Tree Level Order Traversal II 層次遍歷二叉樹
阿新 • • 發佈:2018-12-03
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; }