A ver, por donde empiezo:
1 - Te felicito por haber empezado a usar C#. Si conoces java, te vas a dar cuenta rápidamente que C# es un lenguaje muchísimo más moderno, productivo, flexible, versátil, y en definitiva muchísimo más placentero para trabajar que java, que es un lenguaje horrendo y arcaico.
2 - Iniciar los campos a su valor por defecto es completamente innecesario. El default de todo reference type es null, con lo cual las lineas 20 y 21 de tu código son redundantes. Hay que sacarlas.
3 - Luego de sacar las lineas 20 y 21, el constructor Cola() te va a quedar vacio. Un constructor publico vacío es redundante, hay que sacarlo tambien.
4 - el codigo
es redundante, irrespectivamente de cual sea la [condicion], porque [condicion] ya es una expresion que devuelve true o false en si misma, con lo cual el metodo Vacia() se deberia escribir asi:
y ya que estamos (y aca es donde vas viendo las ventajas de C#), podes usar un
Expression-bodied member para reducir el ruido y que tu código sea más breve y conciso:
asi de simple, sin llaves, sin return, sin ruido inutil.
4 - Acostumbrémonos a usar nombres de variables claros. Nadie nos va a cobrar plata por tipear 5 letras mas, y "siguiente" es mucho mas claro que "sig".
5 - declarar una variable e inmediatamente asignarla en la linea siguiente es redundante. Las lineas 34 y 35 de tu código habría que reemplazarlas por:
y ya que estamos (otra vez ventajas sobre java acá), podés usar la
sintáxis de inicialización de objetos para que tu código sea más claro:
y como dije antes, inicializar una referencia a null no tiene ningun sentido.
6 - y para contestar tu pregunta, no veo que el valor de raiz se esté modificando, fuera del caso de insertar el primer valor en el momento en que raiz es null.