2016-02-25 6 views
0
int levelBST(Node node,int key,int level){ 
    if(node==null) 
    return; 
    if(node.data==key){ 
    return level; 
    } 
    else if(node.data>key){ 
    return levelBST(node->left,key,level+1);  
    } 
    else return levelBST(node-right,key,level+1); 
} 

Является ли приведенный выше фрагмент кода правильным или возникают некоторые проблемы. Пожалуйста помоги.Найти уровень ключа в двоичном дереве поиска

+2

Кажется хорошо. if (node ​​== null) return; здесь return -1, указывающий не найден. – NeoAsh

+0

Это было задано в интервью. Интервьюер сказал, что в коде есть ошибки. Кроме того, что вы написали выше. – Virat

+1

Вам не нужно передавать уровень в качестве аргумента. Он должен автоматически увеличиваться при каждом вызове. например, return levelBST (node-> left, key) +1; в первом возвратном выражении это будет 0; – NeoAsh

ответ

0

Я бы осуществить это таким образом: (предполагается, что Node является указателем)

int levelBST(Node node, int key){ 
    if(node==null) 
    return -1; 

    if(node->data < key){ 
     return levelBST(node->right, key); 
    } 
    if(node->data > key){ 
     return levelBST(node->left , key);  
    } 
    return 0; 
} 
Смежные вопросы