このライブラリを使用して、ツリー構造に関する情報を保持しています。
http://www.datasoftsolutions.net/tree_container_library/overview.php
これが私のC++コードの簡略化されたバージョンです:
#include "tcl/sequential_tree.h"
// Node has some data which is not important now
typedef sequential_tree<Node> gametree_t;
typedef sequential_tree<Node>::iterator gametree_iter;
int main() {
gametree_t gametree;
gametree_iter gametree_it;
gametree_it = gametree.insert(Node(0));
gametree_it->insert(Node(1));
gametree_it->insert(Node(2));
gametree_it = gametree_it->insert(Node(3));
gametree_it->insert(Node(4));
gametree_it = gametree_it->insert(Node(5));
gametree_it->insert(Node(6));
return 1;
}
ツリーはこんな感じ
0
|_ 1
|_ 2
|_ 3
|_4
|_5
|_6
Node(6) がルートにつながるすべてのノード、つまり6,5,3,0をトラバースする関数を作成しようとしています。これは C++ での私の最初のプロジェクトであり、ポインターを理解するのに苦労しています。おそらくC++の数行ですが、これを数時間実行しようとしましたが、成功しませんでした。どんな助けでも大歓迎です。
このようなものは機能しますが、4 だけでなく多くのレベルで機能する必要があります。
gametree_it->get()->get_value();
gametree_it->parent()->get()->get_value();
gametree_it->parent()->parent()->get()->get_value();
gametree_it->parent()->parent()->parent()->get()->get_value();