Nextlabs Interview Question
4 Interview Reviews |
Back to all Nextlabs Interview Questions & Reviews
Interview questions and reviews posted anonymously by interview candidates
Interview Question for Java Engineer at Nextlabs:
2. Implement the following interface to implement a binary search tree in Java public interface BinaryTree<T extends Comparable<? super T>> { public void insert(T data); public T findMin(); public boolean contains(T data); public void remove(T data); } 2.1. (optional) What does T extends Comparable< super T>> mean? Ans: It means that T has to be of type Comparable, which can avoid redundantly specifying type parameters
| Tags: | java, data structures, tree, binary search tree See more , See less 8 |
Helpful Question?
Yes |
No
Inappropriate?
0 of 0 people found this helpful
by Interview Candidate:
* INSERT
****************************************************************************/
public void insert(T data)
{
root = insert(root, data);
}
private Node<T> insert(Node<T> p, T toInsert)
{
if (p == null)
return new Node<T>(toInsert);
if (toInsert.compareTo(p.data) == 0)
return p;
if (toInsert.compareTo(p.data) < 0)
p.left = insert(p.left, toInsert);
else
p.right = insert(p.right, toInsert);
return p;
}
/***************************************************************************
* FIND MIN
****************************************************************************/
public void findMin( )
{
return findMin(root);
}
private Node<T> findMin( Node<T> t )
{
if( t == null )
return null;
else if( t.left == null )
return t;
return findMin( t.left );
}
/***************************************************************************
* CONTAINS
****************************************************************************/
public boolean contains(T data)
{
return contains(root, data);
}
private boolean contains(Node<T> p, T toSearch)
{
if (p == null)
return false;
else
if (toSearch.compareTo(p.data) == 0)
return true;
else if (toSearch.compareTo(p.data) < 0)
return search(p.left, toSearch);
else
return search(p.right, toSearch);
}
/***************************************************************************
* REMOVE
****************************************************************************/
public void remove(T data)
{
root = remove(root, data);
}
private Node<T> remove(Node<T> p, T d)
{
if (p == null)
throw new RuntimeException("cannot be remove.");
else if (d.compareTo(p.data) < 0)
p.left = delete (p.left, d);
else if (d.compareTo(p.data) > 0)
p.right = delete (p.right, d);
else
{
if (p.left == null)
return p.right;
else if (p.right == null)
return p.left;
else
{
Node<T> tmp = new Node<T>(retrieveData(p.left));
tmp.left = delete(p.left, tmp.data) ;
tmp.right = p.right;
p = tmp;
}
}
return p;
}
private T retrieveData(Node<T> p)
{
while (p.right != null) p = p.right;
return p.data;
}