基于ArrayList的二进制树 - Java

时间:2012-10-16 23:44:19

标签: java arraylist binary-tree

我目前正在实施基于ArrayList的{​​{1}}。我试图弄清楚如何做到这一点,但我遇到了一堵墙。 binary tree in Java我应该实现一堆methods,但每次尝试时,它似乎都不起作用。

我们class标识Position objects。在这个Position<E>中,我们class array listprivateroot variable只有accessible,所以{class 1}} size()method方法很简单。但是,在实现以下方法时遇到了一些麻烦:isEmpty()hasLeft(Position<E>) hasRight(Position<E>) left(Position<E>), right(Position<E>),等等......左右方法简单返回addRoot(E e)left child。我对right child of a node很熟悉,但在使用ArrayList时却不熟悉。

我将如何实施这些方法?我被困住了,我很感激我能得到的任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:2)

当您将二叉树写为数组时,您正在构建通常称为堆的数据。堆很好地记录在案,本文将为您提供有关如何实现它们的大量详细信息:

http://en.wikipedia.org/wiki/Binary_heap

答案 1 :(得分:0)

您可以在连续数组的顶部构建二叉树。基本上,对于阵列的第i个位置上的元素,具有基于0的索引:

left(i) : 2 * i + 1
right(i) : 2 * i + 2