109. Convertir Ordenado Lista de búsqueda binaria árbol (árbol de búsqueda binaria construida a partir de la lista ordenada equilibrio)

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; 
    } 
};

  

Supongo que te gusta

Origin www.cnblogs.com/tyty-Somnuspoppy/p/12570809.html
Recomendado
Clasificación