私はちょうどC++の学習を始めました。プロジェクトのリスト(以下の画像リンク)のツリーを作成する必要がありますが、カスタムツリーか既存のツリーかはわかりません。これはノードとして文字を持つツリーの種類ですか?
ツリー上のビット。大きな青いブロックはリストを表し、小さなブロックはノードを表します。
私はコードや何かを探しているわけではありません。ツリーの説明や情報を見つけることができる場所へのリンクです。
私はちょうどC++の学習を始めました。プロジェクトのリスト(以下の画像リンク)のツリーを作成する必要がありますが、カスタムツリーか既存のツリーかはわかりません。これはノードとして文字を持つツリーの種類ですか?
ツリー上のビット。大きな青いブロックはリストを表し、小さなブロックはノードを表します。
私はコードや何かを探しているわけではありません。ツリーの説明や情報を見つけることができる場所へのリンクです。
イメージのデータ構造は、Trieデータ構造です。
Trieは効率的な情報検索データ構造です。トライを使用すると、検索の複雑さを最適な制限(キーの長さ)にすることができます。 - (出典:GeeksForGeeks)
イメージに表示されているのは、
Act、Actual、Actually、Book、Boss、Bore、Board and Boatの文字列です。
いくつかの便利なリンクの詳細を知るために -
struct List;
struct Node {
// ... node data ...
std::shared_ptr<List> list;
};
struct List {
// ... list data ...
std::vector<std::shared_ptr<Node>> nodes;
};
のようなものを使用したい画像から
、あなたが動的に挿入/の途中からノードを削除する必要がありますリスト。
これは私にとって衣装の木のようです。通常、プロジェクトのために、彼らはデータ構造の組み合わせである独自のコスチュームツリーを作成します。例えば、これはリストとリンクされたリストの組み合わせです。
あなたが説明しているのは、Trieやプレフィックスツリーの実装です。 https://en.wikipedia.org/wiki/Trie
レベルは、リンクリスト、ビットマップ、配列などさまざまな方法で実装できますが、その背後にあるアイデアは同じです。
私はそれが[Linuxカーネルリンクリスト]によって達成することができると思います( https://isis.poly.edu/kulesh/stuff/src/klist/) – lanyusea
thを説明しようイメージ。それだけで、おそらくあなた自身が答えに近づくでしょう。 –