[英]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 .tutorialhorizon.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.