【问题标题】:Java add Tree to ArrayListJava将树添加到ArrayList
【发布时间】:2015-05-29 00:11:54
【问题描述】:

我正在尝试将二叉搜索树的每个节点按顺序添加到 ArrayList,我目前有此代码...

private ArrayList<String> toArray(TreeNode<Comparable> root)
  {    
    ArrayList<String> array = new ArrayList<String>();
    if(root!= null)
      return null;
    inorder(root.getLeft());
    array.add(root.getValue());
    inorder(root.getRight());
    return array;
  }

但运行时出现此错误...

Error: BSTree.java:64: cannot find symbol
symbol  : method add(java.lang.Comparable)
location: class java.util.ArrayList<java.lang.String>

感谢您的帮助。

【问题讨论】:

  • 你的 TreeNode 类是什么样的?
  • 此方法采用 Comparable:s 树 - 有很多 Comparable:s 不是字符串。只有字符串适合 ArrayList。看到了吗?
  • 如何将可比较对象添加到数组列表
  • ArrayList -> ArrayList

标签: java arraylist tree


【解决方案1】:

以下通用方法对您有用吗?我离开了我的编译器,但解决方案应该是这样的:

  private <T extends Comparable<T>> ArrayList<T> toArray(TreeNode<T> root)
  {    
    if(null == root)
      return null;

    ArrayList<T> array = new ArrayList<T>();
    inorder(root.getLeft());
    array.add(root.getValue());
    inorder(root.getRight());
    return array;
  }

这个 TreeNode 看起来类似于这个网页中的类: Some CS Class notes

【讨论】:

    【解决方案2】:

    我用过类似的东西

    private void inorder(Node u){
                if( tree.isLeaf(u) ){
                    arrayList.add(u);
                }else{
                    Node v = tree.getLeft(u);
                    invorder(v);
    
                    arrayList.add(u);
    
                    v = tree.getRight(v);
                    invorder(v);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-30
      • 2013-05-19
      • 1970-01-01
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-11
      • 2013-10-30
      相关资源
      最近更新 更多