題目描述
從上到下按層打印二叉樹,同一層結點從左至右輸出。每一層輸出一行。
算法描述: 利用隊列先進先出的形式,將每一層按照從左到右的形式添加到隊列中,然后逐層打印。
代碼如下:
/** * 按層打印二叉樹 * @param PRoot * @return */ ArrayList<ArrayList<Integer> > Print2(TreeNode pRoot) { ArrayList<ArrayList<Integer>> result = new ArrayList<>(); if (pRoot == null){ return result; } Queue<TreeNode> queue = new LinkedList<>(); queue.add(pRoot); while (!queue.isEmpty()){ Queue<TreeNode> temp = new LinkedList<>(); ArrayList<Integer> data = new ArrayList<>(); TreeNode node = null; while (!queue.isEmpty()){ node = queue.poll(); data.add(node.val); if (node.left != null){ temp.add(node.left); } if (node.right != null){ temp.add(node.right); } } result.add(data); queue = temp; } return result; }新聞熱點
疑難解答