Java 二叉搜索树到数组
我被困于将返回的BS树放入数组中。我想问题是我没有通过计数器来确定下一个空闲索引的位置(我计划将计数器作为数组的第一个元素以使其更容易)。有什么建议吗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; }
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();