返回最低和最高键之间的差异 - 二进制搜索树

时间:2010-05-12 15:55:31

标签: java algorithm data-structures binary-search-tree

这是我正在尝试的二元搜索树的过去的试卷。我无法检查输出是否正确,因为我无法构建其中一个。

问题在于标题

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方法,标题是给我们的。

1 个答案:

答案 0 :(得分:1)

您需要定义两个方法min(Tree)max(Tree),然后将span(Tree t)定义为max(t) - min(t)span本身不应该是递归的,但如果需要,可以递归minmax

请注意,minmax 不是自己的方法。如果你不关心让它们作为自己的单位,你可以把它全部放到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;
}