He estado tratando de poner en práctica un método Contains en mi clase BSTree que acepte un valor y después comprobar a través de todos los nodos para ver si está contenido en el árbol. Creo que el algoritmo es correcto, pero no sé por qué me siguen dando un StackOverflowException en la primera sentencia if. ¿Algunas ideas?
public Boolean Contains(T item)
{
Node<T> node = root;
return contains(root, item);
}
private Boolean contains(Node<T> node, T item)
{
if (item.CompareTo(root.Data) == 0)
{
return true;//return 0 if found
}
else
{
if (item.CompareTo(root.Data) > 0)
{
//root = node.Left;
Node<T> left = root.Left;
return(contains(root, item));
}
else
{
if (item.CompareTo(root.Data) < 0)
{
//root = node.Right;
Node<T> right = root.Right;
return(contains(root, item));
}
else
{
return false;//return 1 if not found
}
}
}
}













