Convert Sorted Array to Binary Search Tree
Este problema consiste dada una lista ordenada, regresar un árbol armado de esa lista, este árbol debe de estar balanceado de altura
Solución
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 dividiendo el array en listas más pequeñas hasta encontrar la solución, en donde la mitad del array se vuelve un nodo y cada rama del árbol recorre el mismo proceso en donde si está a la mitad se vuelve un nodo automáticamente y dado ese punto, los que están a la izquierda se vuelven la izquierda del nodo y los de la derecha se vuelven la derecha del nodo