有序二叉树,使用树排序按升序打印字符串

4

我的目标是从标准输入一行一行地读取(每行一个字符串),将它们插入到树中,然后按升序对字符串进行排序并输出。输出结果如下:

java.util.ArrayList$Itr@659e0bfd

问题: 这是什么意思?

return elementsList.iterator();

我该如何在我的主要程序中使用它?

public class OBTComparable<Type extends Comparable<Type>>
{
  ... 
  private Type data;
  ...
  public Iterator elementsAscending()
  {
    ArrayList<Type> elementsList = new ArrayList<Type>();
    addElementsAscending(elementsList);
    return elementsList.iterator();
  } // elementsAscending

  private void addElementsAscending(List elementsList)
  {
    if (!empty)
    { 
      left.addElementsAscending(elementsList);
      elementsList.add(data); 
      right.addElementsAscending(elementsList);
    } // if
  } // addElementsAscending 

现在进入正题:
public static void main(String[] args)
{
  OBTComparable<String> obt = new OBTComparable<String>();
  BufferedReader reader
    = new BufferedReader(new InputStreamReader(System.in));

  try
  {
    String line;
    while ((line = reader.readLine()) != null)
      obt.insert(line);
    obt.elementsAscending();
    System.out.println(obt.elementsAscending()); 
    ////// NEED HELP HERE /////


  } catch (IOException e) { System.out.println(e); };  

你需要实现自己的二叉搜索树吗? - Alex Salauyou
是的,因为我是初学者。如果您有任何建议,请与我分享。我想学习如何实现它。这可能只需要几行代码,但是... - user4645464
如果你将它变成二叉搜索树,那么对树进行中序遍历将会给出排序后的顺序。很难说,但是看起来你这里没有一个有效的二叉搜索树。只需在插入时保持二叉搜索树规则,然后有一个方法对树进行中序遍历即可。 - Daniel Nugent
1个回答

2

好的,我已经解决了它。

String line;
  while ((line = reader.readLine()) != null)
      obt.insert(line);
    Iterator<String> t = obt.elementsAscending();
    while (t.hasNext())
    {
      String item = t.next();
      System.out.println(item);
    }

感觉现在不错 :D .

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接