我坚持将返回的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);
}
}
答案 0 :(得分:0)
您所要做的就是换行:
arr[arr[0]++] = this.getValue();
到:
arr[++arr[0]] = this.getValue();
请参阅How do the post increment (i++) and pre increment (++i) operators work in Java?
此外,您可以考虑使用ArrayList而不是数组,您可以获得相同的性能,在这种情况下您根本不需要关心索引。只需使用add方法。