【发布时间】:2013-04-18 22:04:02
【问题描述】:
我正在尝试遍历多个列表以查找“目录”。 如果我有一个目录结构,例如: /A/B/C
/A/D/F
如果我寻找 B 或 C,它似乎工作,但对于 D 和 F 失败。我认为这是因为当它遇到它正在搜索列表并且它没有找到正确的目录的情况时,然后它不知道要返回什么(或者如果我取消注释 return NULL 它返回 null,我不希望它这样做,因为这并不意味着它在技术上找不到)。
I.E.如果我搜索 F,它会搜索 A/B/C 并且不知道返回什么。
有没有办法在找到目录或完成查找之前推迟返回值?
Directory* search_tree_for_dir(string dir_name) {
for(list<Directory*>::iterator iter = this->l_dir.begin(); iter != this->l_dir.end(); iter++) {
// Base case: if directory found then return
if((*iter)->name == dir_name){
return *iter;
}
if(*iter != NULL) {
return (*iter)->search_tree_for_dir(dir_name);
}
}
//return NULL;
}
【问题讨论】:
-
一个简单的方法是查找树遍历,如 Post Order Traversal。链接:en.wikipedia.org/wiki/Tree_traversal#Post-order