Primero que nada, estoy suponiendo que el arreglo que utilizamos para ambos arboles es unico (de tamaño = AREA_MEMORIA * sizeof(short) bits) pero la manera de crearlo y manejarlo no esta especificada verdad? entonces yo podría por ejemplo definirlo como:
short * nodes = malloc(AREA_MEMORIA * sizeof(short));
y luego si quiero manejarlo como un arreglo dinámico castearlo a un arreglo de nodos:
(nodo *) nodes