0

我正在使用树分解,并试图在树节点中找到一个顶点

如果找到顶点,我想返回该节点的索引。我正在尝试以 DFS 方式遍历树。我能够遍历所有节点,但是一旦找到具有顶点的节点,它就不会返回索引。

以下是我尝试过的。有人可以指出我哪里出错了吗?

Node* Tree::traversing(Node* node, int v) {

    vector<Node*> s;
    s.push_back(node);  

    while(!s.empty()) {

        Node* nn = s.back();
        s.pop_back();
        int i = nn->point_in_bag(v);
        if(i != -1) { return nn;}

        for(int i=0; i<node->children.size(); i++) {
            Node* n = node->children[i];
            s.push_back(n); 
        }

    }
}

如果找到并且未找到顶点,该函数point_in_bag将返回正整数。-1

4

1 回答 1

0

我得到了它!!!您只需要更改代码:

for(int i=0; i<node->children.size(); i++)

到:

for(int i=0; i< nn->children.size(); i++)

并且也在体内。你知道为什么吗?

于 2013-03-12T11:38:12.817 回答