开发者

Return the difference between the lowest and highest key - Binary Search Tree

This is a past exam paper on binary search trees I am attempting. I have no way to check if the output is correct as I am not capable of building one of these things.

The question is in the title

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;
    }
}

Could anyone suggest what I need to change to get 5/5 marks :D - the only thing we have to do is write the span method, the header was given for us.


You need to define two methods, min(Tree) and max(Tree), then span(Tree t) is defined as max(t) - min(t). span itself shouldn't be recursive, but you can make min and max recursive if you want.

Note that min and max doesn't have to be their own methods. If you don't care for making them stand as their own units, you can put it all into span like this:

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;
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜