2016-09-13 80 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)); 
} 

我只想計算特定節點的高度或深度。如何增加深度。我知道這個節目始終返回1二叉樹中特定節點的高度

+0

寬度優先算法。直到作品... – jurhas

+2

縮進您的代碼,請。 –

+0

'你在'if(root-> left == node || root-> right == node)中使用的''''變量''......它在哪裏定義了? –

回答

0

我覺得沒有必要讓複雜的你可以試試下面的代碼

 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

一個味道的問題,但至少'std ::返回值的最大值是short:'return std :: max(l,r)+ 1;'(已經在問題中) – stefaanv

+0

真的只需要'return node? std :: max(finddepth(node-> left),finddepth(node-> right))+ 1:0;' – Baldrick

+0

Malindented進行代碼轉儲現在變爲upvoted? –