paquete LeetCode_1382 importación kotlin.collections.ArrayList / ** * 1382. Balance de un árbol binario de búsqueda * https://leetcode.com/problems/balance-a-binary-search-tree/description/ * * Ejemplo: * var ti = NodoArbol (5) * var v = ti.`val` * Definición de un nodo de árbol binario. * * + 1.BST finde => array ordenado * complejidad del tiempo es O (n) * espacio complejidad es O (n) * * 2.Cover ordenadas matriz para BST (árbol de búsqueda binaria) * tiempo de complejidad es O (n) * espacio complejidad es O (log n) * / clase TreeNode (var `val`: Int) { var restante: NodoArbol? = Nula derecho var: NodoArbol ? = Nulo } clase de soluciones { divertido balanceBST (root_: NodoArbol ?): NodoArbol? { Si (raíz _ == nula ) { retorno nulo } lista val = ArrayList <int> () // iteración / * val = Pila pila <TreeNode> () de la raíz var = root_ tiempo (stack.isNotEmpty () || raíz! = null) { si (raíz! = null) { stack.push (root) root = root.left } else { root = stack.pop () list.add (root.`val`) root = root.right } } * / // recursividad // izquierda-> Raíz> derecho a finde (lista, root_) de retorno coverHelp (lista, 0 , list.size - 1 ) } privada divertido finde (lista: ArrayList <int>, raíz: NodoArbol? ) { si (raíz == nula ) { retorno } finde (lista, root.left) list.add (root.` val`) finde (lista, root.right) } privadadiversión coverHelp (lista: ArrayList <int>, izquierda: Int, derecha: Int): NodoArbol? { Si (LEFT> derecha) { retorno nulo } mediados val = (izquierdo + derecho) / 2 val nodo = TreeNode (lista [MID]) node.left = coverHelp (lista, la izquierda, mid - 1 ) node.right = coverHelp (lista, mitad + 1 , derecha) de retorno nodo } }