二进制搜索树到数组

时间:2014-03-12 23:36:46

标签: 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 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);
  }  
}

1 个答案:

答案 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方法。