2016-09-13 4 views
-3
int finddepth(Node *node,int key) 
{ 
if(node==NULL) 
    return 0; 
    if(node->data==key) 
    return 1; 
    return max(depth(node->left),depth(node->right)); 
} 

Ich möchte nur Höhe oder Tiefe eines bestimmten Knotens berechnen. Wie werde ich die Tiefe erhöhen. Ich weiß, das Programm immer 1.Höhe eines bestimmten Knotens in einem Binärbaum

+0

Breite ersten Algorithmus. Bis funktioniert ... – jurhas

+2

Bitte Code einrücken. –

+0

Die Variable 'root', die Sie in' if (root-> left == node || root-> right == node) '... verwenden, wo ist sie definiert? –

Antwort

0

zurückkehren denke ich keine Notwendigkeit zu komplex zu machen, können Sie versuchen Code folgende

 int finddepth(Node* root) 
    { 
     if(root==NULL) 
     return 0; 
     int l=finddepth(root->left); 
     int r=finddepth(root->right); 
     if(l>r) 
     return l+1; 
     return r+1; 
     } 
+0

Eine Frage des Geschmacks, aber mindestens 'std :: max 'für die Rückgabe ist kürzer:' return std :: max (l, r) + 1; '(wie bereits in der Frage) – stefaanv

+0

Wirklich nur brauchen' Return-Knoten? std :: max (finddepth (node-> left), finddepth (node-> right)) + 1: 0; ' – Baldrick

+0

Abgestufte Code-Dumps werden jetzt aktualisiert? –

Verwandte Themen