C++ C++;TCL(树容器库):如何直接从节点到根遍历树

C++ C++;TCL(树容器库):如何直接从节点到根遍历树,c++,traversal,tree-traversal,C++,Traversal,Tree Traversal,我使用此库保存有关树结构的信息: 这里是我的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() { game

我使用此库保存有关树结构的信息:

这里是我的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;
}
我试图创建一个函数,给定节点(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();

常用的方法是使用这样的东西

0
|_ 1
|_ 2
|_ 3
  |_4
  |_5
    |_6
Node tmp = gametree_it;
while (tmp->parent() != NULL) {
     tmp = tmp->parent();
}
root = tmp->get();
也许你必须使用
while(tmp->has_parent())
或者类似的东西来代替

我最终使用的是定义一个指向gametree的指针。然后使用->is\u root()方法遍历节点

gametree\u t*gametree\u p;
gametree_p=gametree_it.node();//获取当前节点
而(!gametree\u p->is\u root()){
cout get()->get_value()父项();
}
gametree_t* gametree_p;

gametree_p = gametree_it.node();   // gets current node
while (!gametree_p->is_root()) {
   cout << gametree_p->get()->get_value() << endl;
   gametree_p = gametree_p->parent();
}