2013-05-18 96 views
-3

在我的程序中,我递归地试图在给定目标的同时在树中找到一个节点,但是我无法让它工作!C++搜索树中的一个节点

Stree::Node * Stree::find_node(Node* cur, string target) 
{ 
    Node *tmp = cur;; 
    if(cur == NULL || tmp == NULL) 
     return NULL; 
    if(cur->m_city == target || tmp->m_city == target) 
     return cur; 
    if(find_node(tmp->m_left, target)) 
    { 
     return tmp; 
    } 
    else return find_node(cur->m_right, target); 
+2

错在何处?你会介意给我们一个最小的完整例子吗? – Beta

+0

无论如何你要做线性搜索,为什么要用树?树的点通常是获得O(log N)搜索,但是你没有这样做。 –

回答

3

的问题是在这里:

if(find_node(tmp->m_left, target)) 
{ 
    return tmp; 
} 

您应该返回的find_node有结果:

tmp = find_node(cur->m_left, target); 
if (tmp) return tmp; 
+0

不要喂帮助吸血鬼。 – Puppy