Significado de las preguntas: árbol de búsqueda basado en binario enlazado estructura de lista ordenada equilibrado.
/ ** * Definición de la lista simplemente enlazada. * Estructura NodoLista { * int val; * * NodoLista siguiente; * NodoLista (int x): val (x), al lado (NULL) {} *}; * / / ** * Definición de un nodo de árbol binario. * Estructura NodoArbol { * int val; * * NodoArbol la izquierda; * * NodoArbol derecho; * NodoArbol (int x): val (x), izquierda (NULL), derecho (NULL) {} *}; * / Clase de soluciones { público: TreeNode * sortedListToBST (NodoLista * cabeza) { si (la cabeza == NULL) de retorno NULL; si (cabeza -> siguiente == NULL) return new NodoArbol (cabeza -> val); NodoLista * = rápido la cabeza; NodoLista * lento = cabeza; NodoLista * pre; mientras que (rápido && rápida -> siguiente) { rápido rápido = -> siguiente -> siguiente; pre = lenta; = lento lento -> siguiente; } Pre -> siguiente = NULL; TreeNode * root = nueva NodoArbol (lenta -> val); root -> izquierda = sortedListToBST (cabeza); root -> derecha = sortedListToBST (lenta -> siguiente); raíz de retorno; } };