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 に答える