2016-07-29 38 views
-2

這是我迄今爲止。我需要計算深度爲k的樹的大小。什麼是BST以上的深度

public static int above(Node t, int k) { 
    if (t == null) { return 0; } 
    if (t.key > k) 
     return (above(t.left, k - 1) + above(t.right, k - 1) + 1); 
    else { 
     return above(t.left, k - 1) + above(t.right, k - 1); 
    } 
} 

編輯:此代碼工作和計算在深度k樹的大小。

public static int at(Node t, int k) { 
    if(t == null) return 0; 
    if(k == 0) return 1; 
    return at(t.left, k - 1) + at(t.right, k - 1); 
    } 
+1

什麼是存儲在t.key?這是節點在樹中的深度嗎? –

+0

t.key是當前密鑰,因此它檢查當前密鑰是否大於k – yummyyenni

+0

但是,爲什麼要將當前密鑰與您感興趣的深度進行比較?儘管任何給定節點的關鍵字與樹的深度沒有任何關係, –

回答

0

我會想到更像這樣的東西會這樣做......但也許我不明白這個問題是正確的。

public static int above(Node t, int k) { 
    if (t == null) { return 0; } 
    if (k > 0) { 
     return (above(t.left, k - 1) + above(t.right, k - 1) + 1); 
    } else { 
     return 1; 
    } 
} 
+0

嗨,我在帖子中增加了更多解釋,希望它更有意義。我需要計算深度爲k的樹的大小。所以我添加了+ 1,但它沒有工作 – yummyyenni

0

代碼是計算樹的大小,直到深度爲k其中root是在深度爲1

static int depth=0; 
static int tree_size=0,k=3; 
private static void inorder(Node head) { 
    if(head!=null){ 
     depth++; 
     inorder(head.left); 
     if(depth<=k) 
      tree_size++;    
     inorder(head.right); 
     depth--; 
    } 
} 
相關問題