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 函数..这是一个可以 Root 树并逐级打印的函数...我的代码在一行中打印所有内容..请提出任何建议.. 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--;
}
}
}
关于java - 明智地打印树级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60629208/