Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以二叉搜索树的宽度一阶遍历返回字符串?_Java_String - Fatal编程技术网

Java 如何以二叉搜索树的宽度一阶遍历返回字符串?

Java 如何以二叉搜索树的宽度一阶遍历返回字符串?,java,string,Java,String,我已经知道了如何对一个二叉搜索树进行面包一阶遍历,但是我需要返回一个带树的宽度一阶遍历的字符串,我该怎么做 我的代码: /** * Returns a breadth-first order String of tree elements. * * @return a String with a breadth-first order traversal of the tree */ public String breadthFirstOrder() { Queue<

我已经知道了如何对一个二叉搜索树进行面包一阶遍历,但是我需要返回一个带树的宽度一阶遍历的字符串,我该怎么做

我的代码:

 /**
 * Returns a breadth-first order String of tree elements.
 * 
 * @return a String with a breadth-first order traversal of the tree
 */
public String breadthFirstOrder() {

    Queue<Node<E>> queue = new LinkedList<Node<E>>();

     if (root == null)
         System.out.println("Empty tree");
     queue.clear();
     queue.add(root);
     while(!queue.isEmpty()){
         Node<E> node = queue.remove();
         System.out.print(node.data + " ");
         if(node.left != null) queue.add(node.left);
         if(node.right != null) queue.add(node.right);
        }

}
/**
*返回树元素的宽度一阶字符串。
* 
*@返回一个宽度为一级遍历树的字符串
*/
公共字符串宽度寄存器(){
Queue Queue=new LinkedList();
if(root==null)
System.out.println(“空树”);
queue.clear();
添加(根);
而(!queue.isEmpty()){
Node=queue.remove();
System.out.print(node.data+“”);
如果(node.left!=null)queue.add(node.left);
如果(node.right!=null)queue.add(node.right);
}
}

只需定义一个字符串变量,并在搜索时向其添加
节点.data

/**
 * Returns a breadth-first order String of tree elements.
 * 
 * @return a String with a breadth-first order traversal of the tree
 */
public String breadthFirstOrder() {

 Queue<Node<E>> queue = new LinkedList<Node<E>>();
 String traversal = "";
 if (root == null)
     System.out.println("Empty tree");
 queue.clear();
 queue.add(root);
 while(!queue.isEmpty()){
     Node<E> node = queue.remove();
     System.out.print(node.data + " ");
     traversal += node.data + " ";
     if(node.left != null) queue.add(node.left);
     if(node.right != null) queue.add(node.right);
    }
    return traversal;
}
/**
*返回树元素的宽度一阶字符串。
* 
*@返回一个宽度为一级遍历树的字符串
*/
公共字符串宽度寄存器(){
Queue Queue=new LinkedList();
字符串遍历=”;
if(root==null)
System.out.println(“空树”);
queue.clear();
添加(根);
而(!queue.isEmpty()){
Node=queue.remove();
System.out.print(node.data+“”);
遍历+=node.data+“”;
如果(node.left!=null)queue.add(node.left);
如果(node.right!=null)queue.add(node.right);
}
返回遍历;
}

StringBuilder
作为参数传入,并在BFS期间访问每个节点时附加到它。如果没有参数表,它会是什么样子?我在if(node.right!=null)队列上收到一个错误。添加(node.rightjava和node node=queue*remove();whats node.rightjava和队列的内容*remove()这一次应该没问题。这是我的测试,这是它以后应该打印出来的吗?multipleTree=new BinarySearchTree();multipleTree.add(100);multipleTree.add(50);multipleTree.add(150);multipleTree.add(75);multipleTree.add(25);multipleTree.add(125);multipleTree.add(175);assertEquals(100 50 150 25 175),multipleTree.breadthFirstOrder());您可以检查您的输出信息,它与您的
print
info相同,我相信这是您想要的。