Leetcode:劍指 Offer 32 - III. 從上到下列印二叉樹 III
阿新 • • 發佈:2022-03-13
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res=new ArrayList<List<Integer>>(); if(root==null){ return res; } Queue<TreeNode> queue=new LinkedList<TreeNode>(); queue.offer(root); while(!queue.isEmpty()){ //使用LinkedList連結串列可以選擇進行頭插法還是尾插法,方便旋轉 LinkedList<Integer> level=new LinkedList<Integer>(); int queuesize=queue.size(); for(int i=0;i<queuesize;i++){ TreeNode node=queue.poll(); int resSize=res.size(); //樹的根節點是第0層,所以這裡是偶數層,正常插入 if(resSize%2==0){ level.addLast(node.val); } //奇數層反著插入 else{ level.addFirst(node.val); } if(node.left!=null){ queue.offer(node.left); } if(node.right!=null){ queue.offer(node.right); } } res.add(level); } return res; } }