“Tengo que” puede ser: imposición por parte de un tercero, o una imposición propia, o que lo necesitas porque no quedan más opciones. “Necesito” implica simplemente que tienes una necesidad, sea imperiosa o no. No es cuestión de correcto o incorrecto, muchas veces valen las dos expresiones, pero, en ocasiones, puede modificar el sentido de la frase, te pongo unos ejemplos:
1.- Diferencia clara: “Tengo que hacer mis deberes”= tus padres te lo imponen (y puede que no sea lo que tú quieres hacer), pero te lo puedes imponer tú, o puede ser que no tengas ninguna otra opción (nadie va a hacerlos por ti).
“Necesito hacer mis deberes.” = Enfatizas que es una necesidad, lo necesitas para entender la lección, independientemente de si es una obligación o no.
“Aún no sé si iré con vosotros a esquiar, necesito unos esquís y tendría que comprármelos” = esquiar implica una necesidad de tener esquís, y, si nadie me los deja, no me queda otra opción que comprármelos. En este caso yo no dudaría entre una y otra expresión.
2.- Puedes escoger: “Aún no sé si iré con vosotros, primero tengo que saber dónde vais.” = impones que te lo digan (tal vez no te interesa el destino), “necesito” podría querer decir que necesitas saber el destino para asegurar a ciencia cierta si podrás o no; Si necesitas el permiso de tus padres y te lo darán dependiendo de dónde vayan puedes decir “necesito” porque en realidad necesitas ese dato o “tengo que” porque en el fondo no hay otra opción que saber el destino del viaje para que te den permiso.
3.- No importa la que escojas cuando se sobreentiende que es una necesidad y no una obligación. Siguiendo con el ejemplo que te dan de “tengo que ir al baño”, si estás en clase y no puedes aguantar hasta el descanso lo mismo da “tengo que”/ “necesito” ir al baño, se sobre entiende que es una necesidad biológica ;) Solamente estarías obligado a decir “tengo que” si alguien te lo impusiera.