Problema
Este problema consiste dada una lista ordenada, regresar un arbol armado de esa lista, este arbol debe de estar balanceado de altura
Solucion
class Solution(object):
def sortedArrayToBST(self, nums):
"""
:type nums: List[int]
:rtype: Optional[TreeNode]
"""
def ordenar(l,r):
if l > r:
return None
m = (l+r)//2
node = TreeNode(nums[m])
node.left = ordenar(l,m-1)
node.right = ordenar(m+1, r)
return node
n = len(nums)
r = n-1
return ordenar(0,r)
Este problema se resuelve dividendo el array en listas más pequeñas hasta encontrar la solucion, en donde la mitad del array se vuelve un nodo y cada rama del arbol recurre el mismo proceso en donde si esta a la mitad s evuelve un nodo automaticamente y dado ese punto, los que estan a la izquierda se vuelven la izquierda del nodo y los de la derecha se vuelven la derecha del nodo