1) Es correcto. Un detalle de tu solución es que si lo llamo con el puntero nulo va a fallar. Y consideraste que un árbol de un solo nodo (solo la raíz) tiene altura 0 en vez de 1.
2) Si, es correcto. En tu solución asumiste que los nodos en memoria almacenan los punteros en el formato Segmento-Offset cuando en general en 8086 se almacenan en el formato Offset-Segmento (ver por ejemplo el vector de interrupciones)
3) No deberías poner el "word ptr" en ese caso, porque no hay ambigüedad. Los PUSH son siempre de palabras.
Sobre C), tenés que identificar si hay una rama con el peor caso o si todas las ramas son iguales, y luego identificar la estructura de árbol con N nodos que implique mayor consumo de stack. En tu ejemplo ambas ramas de la recursión cuestan lo mismo por lo que basta con considerar un árbol degenerado en lista y calcular el consumo de stack para ese caso (planteando el consumo en la recurrencia para esa estructura).
Saludos,
Gustavo