免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
28.複数の行に2値の記録(174)
-
説明タイトル:出力層ノードと、左から右へ、上から下へ、バイナリ印刷層、。出力層の各ライン。
-
アイデア:次の層で上位ノード(上位ノードがデキュー)、チームノードのすべての要素を横断して、キュー階層トラバーサルを使用します。
我々は、すべてのこれらの層はノードを横断し、各ノード層(チームの要素の数)、(全てがデキュー)、ラインフィードのためのサイクルの数を制御することができます。ノードを横断することは、その後、次の層を開始します。
package _28.把二叉树打印成多行; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; /** * 题目描述:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 * @author Administrator * */ public class PrintTreeInLine { public static ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> print = new ArrayList<>(); if (pRoot == null) return print; Queue<TreeNode> queue = new LinkedList<TreeNode>(); TreeNode node = pRoot; queue.add(node); while (!queue.isEmpty()) { ArrayList<Integer> list = new ArrayList<>(); //将这层结点遍历完后再跳出循环,跳出循环后,队中的元素全部为下一层结点 for(int i = queue.size();i>0;i--){ node = queue.poll(); list.add(node.val); if (node.left != null) queue.add(node.left); if (node.right != null) queue.add(node.right); } print.add(list); } return print; } public static void main(String[] args) { TreeNode root = new TreeNode(0); TreeNode node1 = new TreeNode(1); TreeNode node2 = new TreeNode(2); TreeNode node3 = new TreeNode(3); TreeNode node4 = new TreeNode(4); root.left = node1; root.right = node2; node1.left = node3; node1.right = node4; ArrayList<ArrayList<Integer>> print = Print(root); System.out.println(print); } } class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } }