En un arbre binari, una fulla és un node sense cap fill.
Feu una funció que, donats dos arbres binaris de naturals, digui si tenen o no les mateixes fulles d’esquerra a dreta. Resoleu el problema utilitzant una funció que generi les fulles d’esquerra a dreta d’un arbre binari. Digueu quin és el cost asimptòtic en el cas millor i en el cas pitjor de les vostres funcions.
Descarregueu-vos el fitxer code.py. El programa
principal, les estructures de dades, la lectura de l’arbre i l’esquelet
de les funcions ja se us dónen implementats.
El programa principal serveix per provar les funcions i llegeix parells d’arbres en preordre (amb valors pels arbres buits) i escriu, per a cada parell, les fulles d’esquerra a dreta dels dos arbres i si tenen o no les mateixes fulles d’esquerra a dreta.
Us pot anar bé fer servir la funció @zip_longest@ d’@itertools@ que funciona com @zip@ però afegeix @None@s si una de les dues seqüències acaba abans que l’altra.
Input
8 3 0 7 -1 4 -1 -1 2 -1 -1 5 4 -1 -1 7 6 -1 1 -1 -1 -1 3 0 7 -1 4 -1 -1 3 -1 -1 5 4 -1 -1 7 -1 6 -1 1 -1 -1 5 5 1 -1 -1 2 -1 -1 5 3 -1 -1 4 -1 -1 6 6 1 -1 -1 2 -1 -1 6 3 -1 -1 4 -1 -1 5 5 1 -1 -1 2 -1 -1 5 3 -1 -1 4 -1 -1 5 5 5 1 -1 -1 2 -1 -1 5 -1 3 -1 -1 4 -1 -1 1 2 1 -1 -1 2 -1 -1 5 3 -1 -1 4 -1 -1 1 2 1 -1 -1 2 -1 -1 5 3 -1 -1 -1 5 5 1 -1 -1 2 -1 -1 5 3 -1 -1 4 -1 -1 6 6 9 -1 -1 2 -1 -1 6 3 -1 -1 4 -1 -1 -1 -1 3 -1 -1 4 -1 -1 12 15 -1 -1 -1 12 -1 15 -1 -1
Output
4 2 4 1 , 4 3 4 1 , False 1 2 3 4 , 1 2 3 4 , True 1 2 3 4 , 1 2 3 4 , True 1 2 3 4 , 1 2 3 , False 1 2 3 4 , 9 2 3 4 , False , , True 3 , 4 , False 15 , 15 , True