2016-07-29 84 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--; 
    } 
}