オファー28に勝つ。バイナリ印刷を複数のライン(174)

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/qq_38332722/article/details/100557887

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;
    	}
    }
    

おすすめ

転載: blog.csdn.net/qq_38332722/article/details/100557887