0
特定の数式でバイナリ検索ツリーを実装するには、配列を使用する必要があります。ルートはtree [0]です。ツリー[n]のノードの場合、ツリーの[2n + 1](左側のブランチ)とツリー[2n + 2](右側のブランチ)にnの子があります。私は、BSTを格納するために2番目の配列を作成することができます。この特定の数式を持つソートされていない配列を使用してバイナリ検索ツリーを実装する方法は?
for(i=1;i<;i++) {
//Every iteration we start from the root node
while (the cell is not empty){
if(less than the element)
go to 2i+1;
else if (greater than the element)
go to 2i+2;
はこれまでのところ、この私がブレインストーミング何:
public class BinarySearchTree {
public void createBST(int[] array) {
int[] tree = new int[array.length];
int root = array[0];
for (int i = 0; i < array.length; i++) {
if (array[i] < root) {
tree[(2*i)+1] = array[i];
} else {
array[(2 * i) + 2];
}
}
}
}
私はここから行くかわからないん私は擬似コードを与えられています。私は解決策なしでこれをしばらく行ってきました。どんな助けもありがとうございます。ありがとうございました。
ありがとうございます!私はコードを実行し、ArrayIndexOutOfBoundExceptionがあります。私はarray.lengthの変更を試み、余分なif文をpos> array.lengthのときに追加しようとしましたが、結果はありません。 whileループステートメントかもしれないと思います。これを修正する方法はありますか? – Jen
根本的な問題は、シーケンス '1; 2; 3; 4"を追加する擬似コードに続いて '0; 2; 6; 14'の位置に格納されますが、配列の長さは4だけです。ダムの解決策は、配列を十分に大きくすることです。他の解決法:何らかのバランスを取る、またはバイナリ検索ツリー(効率的ではないが、動作することが保証される)になるための '配列 'のソート。 'array'はソートされていますか? – Poohl
私はちょうど私のプログラムをデバッグし、あなたが何を言っているかを見ます。いいえ、配列はソートされません。私の教授は、配列をソートしたくないと述べました。申し訳ありませんが、私は何かを言及することを忘れていました:ノードに左と右の子がない場合、対応する位置は-1になります。私は前者をする必要があるので、配列を大きくする必要がありますか? – Jen