Arbol
Este problema consiste en regresar un booleano que describe si dos raíces de unos árboles describen dos árboles iguales
Solución
def is_same_tree(p, q)
izq = [p]
der = [q]
while izq.length != 0 && der.length != 0
e_izq = izq.pop
e_der = der.pop
if e_izq.nil? ^ e_der.nil?
return false
end
next if e_izq == nil
if e_izq.val != e_der.val
return false
end
izq<<e_izq.left
der<<e_der.left
izq<<e_izq.right
der<<e_der.right
end
true
end
Este programa lo resolví creando dos ques para cada árbol, y añadiendo los nodos hoja de cada nodo a su respectiva lista y regresando false en la diferencia de valor del nodo o de la arquitectura.
Primero se guardan en una lista y se van sacando los elementos uno por uno, luego se revisa si existe diferencia entre sí, es decir continúa si los dos son nulos o si los dos son no-nulos, si alguno es nulo pero el otro no entonces no son iguales, finalmente compara el valor de cada uno.
Esta versión se encuentra en el top ~98% de velocidad