2

私は現在、ArrayListベースを実装する過程にありbinary tree in Javaます。私はこれがどのように行われるかを理解しようとしていますが、壁にぶつかっています。methods実装することになっているものがたくさんありますが、class何かを試すたびに、うまくいかないようです。

Position objectsによって識別されるものがありますPosition<E>。これclassarray listprivate、とがありroot variable、どちらもaccessibleこれだけclassであるため、、size() methodisEmpty()メソッドは単純です。ただし、:hasLeft(Position<E>)、などのメソッドの実装に関しては、問題が発生していhasRight(Position<E>) left(Position<E>), right(Position<E>), addRoot(E e)ます。LeftメソッドとRightメソッドは、単にとを返しleft childますright child of a node。私はに精通してArrayListいますが、それらを使用して実装する場合はそうではありませんbinary tree class

これらのメソッドを実装するにはどうすればよいですか?私は立ち往生しています、そして私が得ることができるどんな助けでもありがたいです。

ありがとう!

4

2 に答える 2

2

二分木を配列として記述する場合、通常はヒープと呼ばれるものを構築します。ヒープはかなりよく文書化されており、この記事では、ヒープがどのように実装されているかについて多くの詳細を説明します。

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

于 2012-10-17T02:16:44.340 に答える
0

連続した配列の上に二分木を構築できます。基本的に、配列の i 番目の位置にある要素に対して、0 ベースのインデックスを持つ:

left(i) : 2 * i + 1
right(i) : 2 * i + 2
于 2012-10-17T02:27:59.680 に答える