INORDER使用して、同じサイズのソートされた配列から既存のBSTを記入要素 - ツリー上のインオーダートラバーサルで行う必要があります。つまり、arr[0]
が最も左側のノードにあり、arr[n-1]
が最も右側のノードになるようにします。 (だからそれはO(n)
時間かかる)私はサイズ<code>n</code>と(異なる値の)大きさ<code>n</code>の<code>int</code>のソートされた配列の<code>int</code>のBSTツリーを持っていると私は配列を使用してツリーを埋めるためにしたい場合はトラバーサル
私はそれを行う素朴な再帰関数を書こうとしましたが、動作しません。現在のインデックスを配列に保存するには、何かをしなければならないようです。
void insert(Node* v, int* arr) {
if (!v) {
return;
}
insert(v->left, arr);
v->key = a[0];
insert(v->right, arr + 1);
}
どのように変更する必要がありますか?