Cómo convertir una lista vinculada ordenada individual y doblemente a BST

Hay 2 enfoques para este problema,

  1. Enfoque de arriba hacia abajo

    Obtenga el nodo central de la lista vinculada y conviértalo en Nodo raíz.
    Ahora la lista se divide en 2 partes del lado izquierdo del nodo medio y del lado derecho del nodo medio.

    Haga lo mismo recursivamente para el lado izquierdo y el lado derecho.
    a) encuentre el elemento central del lado izquierdo y hágalo hijo izquierdo del nodo raíz creado en el paso 1.
    b) encuentre el elemento medio del lado derecho y hágalo hijo secundario del nodo raíz creado en el paso 1.

El seguimiento de la pila del algoritmo anterior se verá a continuación,

Enfoque 2:

En este enfoque, comenzaremos a crear un árbol de abajo hacia arriba.
El nodo raíz del árbol se creará por fin.

  1. La lógica es calcular primero el tamaño de la Lista y una vez que se identifica el tamaño de la Lista Vinculada,
  2. Repita el mismo paso que hicimos en el primer enfoque, pero en lugar de identificar el nodo central, dividiremos la lista (longitud de la lista / 2) en 2 partes recursivamente en el lado izquierdo y el lado derecho. (Por último, posponga la creación del nodo, de modo que los nodos de hoja que son los nodos inferiores se creen primero y luego los nodos superiores)
  3. Al dividir la lista en 2 partes de forma recursiva, en un punto dejaremos solo un nodo y ese será el nodo hoja, crearemos un nodo Árbol por ese elemento y devolveremos un nodo a la llamada recursiva previa.

Explicación detallada con el programa: Convertir la lista vinculada ordenada a BST equilibrado

Siga la recomendación, primero intente esto usted mismo.

Lista vinculada ordenada a BST equilibrado – GeeksforGeeks
Conversión in situ de DLL ordenado a BST equilibrado – GeeksforGeeks

Dile a tu mamá que se baje
¿Cuáles son tus insultos favoritos relacionados con la informática?

More Interesting

Ha pasado un mes desde mi graduación, pero no tengo llamadas de trabajo. Lo he intentado todo. ¿Qué tengo que hacer?

¿Qué preparación especial hay que hacer para las entrevistas de empresas como Google, Amazon y Facebook?

He estado luchando durante un año para aprender algoritmos y todavía no puedo pasar ninguna entrevista técnica, ¿qué debo hacer?

Si ha sido rechazado de una escuela de codificación de élite y ha vuelto a aplicar y luego ha sido aceptado, ¿cuál es su historia?

¿Cómo debo prepararme para programar ubicaciones si solo tengo 1 mes disponible?

¿Cuáles son algunas de las preguntas importantes de la entrevista técnica que utiliza la estructura de datos matriciales?

¿Por qué usamos un puntero de estructura dentro de una definición de estructura en C?

Programación dinámica (DP): dos jugadores juegan el siguiente juego: eligen un número aleatorio N (menos de 2 mil millones) y luego, a partir de 1, se turnan para multiplicar el número del turno anterior con 2 o 9 (su elección). Quien llegue a N primero gana. ¿Determinar ganador del juego de números 2/9?

Cómo usar el hash para el problema de la suma de tripletas

¿Cuál es un plan de estudio sólido para convertirse en élite en la resolución de problemas de algoritmos para codificar entrevistas?

¿Cómo podemos encontrar el árbol de búsqueda binario más grande en un árbol binario de manera eficiente?

¿Cuál es la mejor manera de prepararse para las entrevistas de Java para desarrolladores no java?

Cómo prepararse para una entrevista técnica para la colocación de TCS para informática

¿Qué tan difíciles son las entrevistas con los ingenieros de software de Bloomberg en comparación con otras compañías tecnológicas como Google, Facebook, etc.?

¿Cómo se prepara para una entrevista de ServiceNow?