stlリストの最初のノードをバイナリツリーノードに割り当てようとしています... 私が直面している問題は、stlにリストされている関数にツールが表示されないということです私がそれを可能にするために。例えばstlリストの最初のノードにアクセス
: 私は次のリストを作成した場合:
list<int> L;
L.push_front(10);
L.push_back(20);
L.push_back(30);
L.push_back(40);
L.push_back(50);
L.push_back(60);
L.push_back(70);
リストは次のようになります。10,20,30,40,50,60,70 ...
私の質問があります、新しいノード(特にバイナリツリーノードを使用している)をリストの最初のノードに割り当てる方法はありますか?リストをバイナリツリーに変換する関数に渡すために、整数値ではなくノード値が必要です。
これは明白な理由のために動作しませんでした:新しいにその最初のノードを割り当てる方法がある場合、それはノード値に整数を代入しようとしているよう
binary_tree_node<Item> *node = list.front();
が、私はちょうど興味がありましたノード。
今これは、したがって、このような何か::
class binary_tree_node<T> {
T classMember;
binary_tree_node(T &data) {
classMember = data;
}
}
、私はあなたがあなたのクラスbinary_tree_node<T>
でコンストラクタを作る提案します、私は
template <class Item>
binary_tree_node<Item>* convert(list<Item> &list, int start, int end)
{
binary_tree_node<Item> *node = list.front();
if (start > end) return NULL;
int mid = start + (end - start)/2;
binary_tree_node<Item>* leftChild = convert(list, start, mid-1);
binary_tree_node<Item>* parent = new binary_tree_node<Item> (node->data());
parent->left() = leftChild;
node = node->next();
parent->right() = convert(list, mid+1, end);
return parent;
}
template <class Item>
binary_tree_node<Item>* convert(list<Item> &head, int n)
{
return convert(head, 0, n-1);
}
'binary_tree_node'とは何ですか?あなたのカスタムクラス? – Jarod42
何をしようとしていますか?バイナリツリーを作成しますか?バイナリツリーノードで 'std :: list'を使いますか?ノードを入れるには 'std :: list'を使いますか? –
このコースで使用する教科書の作成者が作成したカスタムテンプレートクラスの実装。 @ Jarod42 –