当前位置: 首页 > 知识库问答 >
问题:

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

唐俊楚
2023-03-14

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

我的代码:

 /**
 * 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);
        }

}

共有1个答案

孟沛
2023-03-14

只需定义一个String变量,并在搜索时将node.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;
}
 类似资料:
  • 编写一个函数,如果给定的二叉搜索树包含给定的值,则返回1,否则返回0。 例如,对于以下树: N1(值:1,左:null,右:null) n2(值:2,左:n1,右:n3) N3(值:3,左:null,右:null) 对contains(&n2,3)的调用应返回1,因为根位于n2的树包含编号3。 函数应该返回1,然而,它返回0或者根本不返回。

  • 对于二叉搜索树:7为根,1为左子,10为右子。 我试过调试这个函数,看看它是如何工作的,但我似乎不能理解一件事。函数检查并看到1的左子项和右子项都为空后,它就移动到节点10,然后检查右子项是否为空。有人能解释一下递归模式,以及为什么方法在初始检查节点1后没有退出。

  • 我用java编写了一个实用的二叉搜索树,除了一个关键的函数,搜索。我使用的逻辑是,我将检查根是否为空,然后我要搜索的术语是否等于根(所以返回根)或>根(所以搜索右子树)或 使用printlns查看正在发生的事情,我发现如果值在那里,它将通过正确的if语句(包括将BNode n设置为找到的值),但随后由于某种原因将再次通过方法(返回null)。 这个方法唯一起作用的时候是在搜索根节点的时候,这对我来

  • //执行顺序遍历的递归方法

  • NowCoder 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。假设输入的数组的任意两个数字都互不相同。 例如,下图是后序遍历序列 1,3,2 所对应的二叉搜索树。 解题思路 // java public boolean VerifySquenceOfBST(int[] sequence) { if (sequence == null || sequence.l