題目 :給定一個二叉樹,返回其按層次遍歷的節點值。 (即逐層地,從左到右訪問全部節點)。spa
例如:
給定二叉樹: [3,9,20,null,null,15,7]
,code
3 / \ 9 20 / \ 15 7
返回其層次遍歷結果:blog
[ [3], [9,20], [15,7] ]
思路分析:
由於須要按層次遍歷節點,因此咱們能夠使用隊列先進先出的特色來存儲每層節點的值
每取出一個節點就將該節點的左右節點存入隊列當中
代碼以下:
1 public List<List<Integer>> levelOrder(TreeNode root) { 2 List list= new ArrayList(); 3 if(root==null){ 4 return list; 5 } 6 Queue<TreeNode> queue= new LinkedList(); 7 queue.add(root); 8 while(true){ 9 List<Integer> list1=new ArrayList(); 10 int size= queue.size(); 11 if(size==0){ 12 return list; 13 } 14 for(int i=0;i<size;i++){ 15 TreeNode t=queue.poll(); 16 list1.add(t.val); 17 if(t.left!=null){ 18 queue.add(t.left); 19 } 20 if(t.right!=null){ 21 queue.add(t.right); 22 } 23 } 24 list.add(list1); 25 } 26 27 }
經過for循環來控制當層的元素,當隊列中沒有元素時,退出迭代。隊列