4

这是我正在尝试的关于二叉搜索树的过去试卷。我无法检查输出是否正确,因为我无法构建这些东西之一。

问题在标题中

class Tree{
    Tree left;
    Tree right;
    int key;

   public static int span(Tree tree)
   {
        if ( tree == null ){
             return null;
        }

        if( tree.left != null)
             int min = span(tree.left);
         }

        if( tree.right != null){
             int max = span(tree.right);
         }
         return max - min;
    }
}

任何人都可以建议我需要更改什么以获得 5/5 标记:D - 我们唯一要做的就是编写span方法,标题是为我们提供的。

4

1 回答 1

1

需要定义两个方法,然后min(Tree),定义为。本身不应该是递归的,但如果你愿意,你可以制作和递归。max(Tree)span(Tree t)max(t) - min(t)spanminmax

请注意,minandmax不一定是他们自己的方法。如果你不关心让它们作为自己的单位,你可以把它全部变成span这样:

int span(Tree t) {
   Tree tMin = t;
   while (tMin.left != null) {
      tMin = tMin.left;
   }

   Tree tMax = t;
   while (tMax.right != null) {
      tMax = tMax.right;
   }

   return tMax.key - tMin.key;
}
于 2010-05-12T16:21:36.747 回答