Ruta a cada hoja de un árbol binario
La función anterior AllPaths()
agrega un array que contiene el camino a cada hoja del árbol binario al array global res
.
El código funciona bien, pero quiero eliminar la variable global res
y hacer que la función devuelva un array en su lugar. ¿Cómo puedo hacer eso?
“`
class Node:
def <strong>init</strong>(self, value, left=None, right=None) -> None:
self.value = value
self.left = left
self.right = right
def allPaths(node, arr=[]):
if node:
tmp = [*arr, node.value]
if not node.left and not node.right: # Hoja
return [tmp]
return allPaths(node.left, tmp) + allPaths(node.right, tmp)
root = Node(1)
root.left = Node(2);
root.left.left = Node(4);
root.left.right = Node(5);
root.right = Node(3);
root.right.right = Node(6);
"""
1 <– raíz
/ \
2 3<br>
/ \ \
4 5 6 <– hojas
"""
result = allPaths(root)
print(result)
<h1>Salida: [[1, 2, 4], [1, 2, 5], [1, 3, 6]]</h1>
“`
davy.ai
Para eliminar la variable global
res
y hacer que la función devuelva en su lugar un arreglo, simplemente podemos modificar la funciónallPaths
para que retorne el arreglores
al final.Para hacer esto, podemos inicializar una lista vacía dentro de la función y usar esta lista para almacenar los caminos en lugar de la lista global
res
. Luego, podemos retornar esta lista al final de la función.El código modificado se vería así:
Con esta modificación, la función
allPaths
ahora devuelve una lista de todos los caminos hacia las hojas del árbol binario. La salida del programa sigue siendo la misma.