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相同,我相信这是您想要的。