2015-08-01 4 views
2

Я начинающий Java, и я пытался написать код для подсчета количества узлов, глубина которых меньше заданной глубины и количества узлов, глубина которых больше заданной глубины ,Размер выше Глубина и размер ниже Глубина

public static int sizeAboveDepth(Node t, int k) { 
 
    // TODO: Complete this method. 
 
    if (t == null) { 
 
     return 0; 
 
    } 
 
    if (t.key > k) 
 
     return (sizeAboveDepth(t.left, k - 1) + sizeAboveDepth(t.right, k - 1) + 1); 
 
    else { 
 
     return sizeAboveDepth(t.left, k - 1) + sizeAboveDepth(t.right, k-1); 
 
    } 
 
    } 
 

 
    // EXERCISE 6: The method "sizeBelowDepth" is described above. 
 
    // The number of nodes in the tree "below" depth k (not including k) 
 
    // include node n if depth(n) > k. 
 
    public static int sizeBelowDepth(Node t, int k) { 
 
    // TODO: Complete this method. 
 
    if (t == null) { 
 
     return 0; 
 
    } 
 
    if (t.key > k) 
 
     return (sizeBelowDepth(t.left, k-1) + sizeBelowDepth(t.right, k-1) + 1); 
 
    else { 
 
     return sizeBelowDepth(t.left, k-1) + sizeBelowDepth(t.right, k-1); 
 
    } 
 
    }

так ли кто-нибудь может помочь мне исправить это? Я как бы сумасшедший об этом сейчас ~~

+0

Как вы думаете, имеет ли Node.key глубину узла? – laune

+0

Я знаю, что это волнует, но я не знаю другого способа сделать это –

+0

Можете ли вы описать свой класс Node? Я думаю, вам не нужно изменять значение K, вы можете сделать его статическим. –

ответ

-1
public static int sizeAboveDepth(Node t, int depth, static int k) { 
    // TODO: Complete this method. 
    if (t == null) { 
     return 0; 
    } 
    if (depth < k) 
     return (sizeAboveDepth(t.left,depth+1, k) + sizeAboveDepth(t.right, depth+1, k) + 1); 
    else { 
     return 0 
} 
} 

public static int sizeBelowDepth(Node t, int depth,static int k) { 
    // TODO: Complete this method. 
    if (t == null) { 
     return 0; 
    } 
    if (depth > k) 
     return (sizeBelowDepth(t.left, depth+1, k) + sizeBelowDepth(t.right, depth+1, k) + 1); 
    else { 
     return sizeBelowDepth(t.left,depth++, k) + sizeBelowDepth(t.right,depth++, k); 
    } } 

Я не уверен, но я думаю, что это может вам помочь.

0
public static int sizeAboveDepth(Node t, int depth, final int k) { 
    if (t != null && depth < k){ 
    return sizeAboveDepth(t.left, depth+1, k) + 
      sizeAboveDepth(t.right, depth+1, k) + 1; 
    } else { 
    return 0; 
    } 
} 

public static int sizeBelowDepth(Node t, int depth, final int k) { 
    if (t == null) { 
    return 0; 
    } 
    int below = sizeBelowDepth(t.left, depth+1, k) + 
       sizeBelowDepth(t.right, depth+1, k); 
    if (depth > k){ 
    below++; 
    } 
    return below; 
} 
Смежные вопросы