簡體   English   中英

明智地打印樹級別

[英]print tree level wise

 public class treeNodeUse {


        public static treeNode<Integer> takeInput(){
            int n;
            Scanner sc = new Scanner(System.in);
            System.out.println("enter data of node");
            treeNode<Integer> root = new treeNode<>(sc.nextInt());
            System.out.println("enter number of children ");
            int count = sc.nextInt();

            for (int i=0;i<count;i++){
                treeNode<Integer> children = takeInput();
    root.children.add(children);
            }
    return root;
        }
        public static treeNode<Integer> takeInputLevelwise(){
            Queue<treeNode<Integer>> q = new LinkedList<>();
            Scanner sc = new Scanner(System.in);
            System.out.println("enter value of root");
            treeNode<Integer> root = new treeNode<Integer>(sc.nextInt());
    q.add(root);
            while(!q.isEmpty()){
                treeNode<Integer> a = q.remove();
                System.out.println("enter no of children of " + a.data);
                int x = sc.nextInt();
                for(int i=0;i<x;i++){
                    System.out.println("enter " + (i+1)+"th "+"child of " +a.data );
                    treeNode<Integer> child = new treeNode<Integer>(sc.nextInt());
                    a.children.add(child);
                    q.add(child);

                }

            }
            return root;
        }

        public static void printLevelWise(treeNode<Integer> root){
            Queue<treeNode<Integer>> q = new LinkedList<>();
           q.add(root);
            System.out.println(root.data);
            while(!q.isEmpty()){
                treeNode<Integer> a = q.remove();
                if(a.children.size() > 0) System.out.println();
                for(int i=0;i<a.children.size();i++) {
                    q.add(a.children.get(i));
                    System.out.print(a.children.get(i).data + " ");

                }

            }

        }

        public static void print(treeNode<Integer> root){
    String s = root.data + ":";
    for(int i =0 ; i<root.children.size();i++){
        s = s+ root.children.get(i).data + "," ;
    }
    System.out.println(s);
    for(int i=0;i<root.children.size();i++)
    print(root.children.get(i));
        }


        public static void main(String[] args){

    printLevelWise(takeInputLevelwise());
        }



    }


     class treeNode<T> {
        T data;
        public ArrayList<treeNode> children;
        public treeNode(T data){
            this.data=data;
            children = new ArrayList<>();
        }

    }

檢查 printLevelWise 函數..這是一個函數,它會以樹的根為根並明智地打印它......我的代碼在一行中打印所有內容......請提供任何建議...... https://i1.wp.com/algorithms .tutorialhorizo​​n.com/files/2014/09/Level-Order-Traversal-Print-each-level-in-one-line.1.png這就是我想要的輸出

您必須像下面的代碼一樣一次打印所有級別節點。 希望這將解決您的問題。 如果不明白任何部分,請告訴我。

public static void printLevelWise(treeNode<Integer> root) {
    Queue<treeNode<Integer>> q = new LinkedList<>();
    q.add(root);
    System.out.print(root.data);
    while (!q.isEmpty()) {
        int levelSize = q.size();

        if (levelSize > 0) System.out.println();
        while(levelSize > 0) {
            treeNode<Integer> a = q.remove();
            for (int i = 0; i < a.children.size(); i++) {
                q.add(a.children.get(i));
                System.out.print(a.children.get(i).data + " ");
            }
            levelSize--;
        }


    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM