在ArrayList二叉树中查找Index是否为null

时间:2015-11-16 19:12:00

标签: java arraylist binary-tree

这是一个uni项目,我们编写一个“生命之树”来编写问题,然后用自己的答案填充自己,作为二叉树,它有“漏洞”,所以基本上它可以有一些数据在索引20但不在15上,所以.size()也不会起作用

这给了我一些问题,因为我需要知道某个索引是否为null,但如果找不到任何内容,ArrayList.get将返回IndexOutOfBoundsException(如文档所述)

if(tree.get(next) == null){ 
                String nName = getInput();
                String nCarac = getInput(nName,nome);
                tree.add(next,nCarac);
                tree.add(next+Math.pow(2,height), nName);
                restart();
            }else{
                question(next,height);
            }

解决这个问题的方法是什么?

它不是“常规”二叉树,它的外观如下:

              o
             / \
            o   o
            |   |
            o   o
           / \ / \
          o   oo  o

1 个答案:

答案 0 :(得分:1)

好吧,您似乎正在尝试在数组中尚不存在的位置添加值。在超出范围的索引之后添加值是不可能的 -

tree.add(next+Math.pow(2,height), nName);

可能已经超出界限。

我认为你应该考虑另一种数据结构。就像你说的:一棵树。而不是使树成为ArrayList<>,你应该有一个

class TreeNode{
ArrayList children = new ArrayList<TreeNode>();
...Some other properties like "nName" and nome ...
}

创建树,您可以拥有根节点并连续添加子节点 - 例如:

TreeNode root = new TreeNode();
TreeNode childLevel1 = new TreeNode();
root.children.add(childLevel1);
TreeNode childLevel2 = new TreeNode();
childLevel1.children.add(childLevel2);

它给出了两层深度的树,每层有一个节点。

root
  |
childLevel1
  |
childLevel2
  • 但也许我误解了这个问题?