#########################################################################################
###                   HOMEWORK 2				                      ###
#########################################################################################
# Es dado un arbol binario de enteros en memoria.		                      ###
# La etiqueta del nodo es 0 si el nodo estĂ  sano,			              ###
# 1 si el nodo está enfermo. Escribir una función que calcule                         ###
# la distancia del nodo vecino a la raíz más proximo.		                      ###

# La distancia es  0 si la raiz está enferma,			                      ###
# 1 si la raiz está sana y un hijo está enfermo, 		                      ###
# 2 si la raiz y los hijos están sanos y uno de los hijos de los hijos está enfermo. #### 
# Y etcetera...
#-1 si ninguno estĂĄ enfermo.	                                                      ###

# Escribase tambien el  main() del programa que llama a la                            ###
# funcion sobre un arbol en memoria e imprime a consola el resultado.
#########################################################################################

# solucion hw2 facultativo - dado un arbol restituir la altura cuando se encuentra el valor "1"
.data
tree:	.word n01
n01:	.word 0, n02, n03
n02:	.word 0, n04, n05
n03:	.word 0, n06, n07
n04:	.word 1, 0, 0
n05:	.word 0, 0, 0
n06:	.word 0, 0, 0
n07:	.word 0, 0, 0

.text
		lw a0, tree
		jal covid
		li a7, 1
		ecall
		li a7, 10
		ecall
		
covid:	bne a0, zero, rec
		li a0, -1
		jalr zero, ra, 0
		
rec:	lw t0, 0(a0)
		beq t0, zero, skip
		li a0, 0
		jalr zero, ra, 0

skip:	addi sp, sp, -12
		sw ra, 0(sp)
		sw a0, 4(sp)
		lw a0, 4(a0)
		jal covid
		
		sw a0, 8(sp)
		lw a0, 4(sp)
		lw a0, 8(a0)
		jal covid
		
		lw t0, 8(sp)	# raiz sana
						# t0 sa sx
						# a0 dist sa dx
		bleu a0, t0, skip2
		mv a0, t0
skip2:	blt a0, zero, skip3
		addi a0, a0, 1
		
skip3:	lw ra, 0(sp)
		addi sp, sp, 12
		jalr zero, ra,-100
