Java 二叉搜索树到数组

Java 二叉搜索树到数组,java,arrays,tree,binary-tree,binary-search-tree,Java,Arrays,Tree,Binary Tree,Binary Search Tree,我被困于将返回的BS树放入数组中。我想问题是我没有通过计数器来确定下一个空闲索引的位置(我计划将计数器作为数组的第一个元素以使其更容易)。有什么建议吗 public int[] returnInOrderTraversal(){ int[] arr = new int[getSize()+1]; if (rootNode != null) { rootNode.returninOrderTraversal(arr); } return arr; }

我被困于将返回的BS树放入数组中。我想问题是我没有通过计数器来确定下一个空闲索引的位置(我计划将计数器作为数组的第一个元素以使其更容易)。有什么建议吗

  public int[] returnInOrderTraversal(){
       int[] arr = new int[getSize()+1];
  if (rootNode != null)
  {
      rootNode.returninOrderTraversal(arr);
  }
return arr;
   }


public void returninOrderTraversal(int[] arr){
  if(this.getLeftChild() != null)
  {
      this.getLeftChild().returninOrderTraversal(arr);

  }
  arr[arr[0]++] = this.getValue();
  if (this.getRightChild() != null)
  {
      this.getRightChild().returninOrderTraversal(arr);
  }  
}

您所要做的就是换行:

arr[arr[0]++] = this.getValue();
致:


也可以考虑使用数组来代替,您可以得到相同的性能,在这种情况下,您根本不需要关心索引。只需使用方法。

不,仍然是“java.lang.ArrayIndexOutOfBoundsException”,您可以添加更多代码吗?getSize()方法看起来如何?getSize()方法有一些问题,添加5个节点后,getSize()方法返回2。调用getSize()时,您只查看左或右子级,必须同时查看它们并添加这两个大小…谢谢,我已将其更改为正确的,添加了打印方法public void printary(){int[]arr=new int[getSize()+1];returnInOrderTraversal();System.out.println(“Array:+arr);},现在输出为[I@4187a8e0而不是1 2 4 5 9 12有什么想法吗?
arr[++arr[0]] = this.getValue();