2013-03-12 142 views
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頂點沒有找到。

回答

0

我明白了!你只需要改變代碼:

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

到:

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

,並在體內。你知道爲什麼嗎?

+0

因爲遍歷整個樹時,當前節點總是變化,所以你不僅可以使用持久指針節點來獲取當前節點的子節點。 – YXHJ513 2013-03-12 11:40:18

+0

感謝兄弟..現在我明白了。它的工作... – user322 2013-03-12 12:33:57