Cómo acceder a la raíz de un árbol binario si está almacenado en una estructura

Voy a suponer que es C, ya que estás hablando de Structs.

Hay varias formas. Suponga que ha sido, ha sido pragmático y ha designado una referencia de Poitner a la raíz, desde antes. Entonces, simplemente puede referirse a ese valor, si está manejando métodos.

¿De otra manera?

Tendría que atravesar los nodos hacia arriba, en cualquier estructura de nodos que tenga.

Ahora, dado que es un árbol binario, supongo que se trata simplemente de estructuras de 2 nodos en cada ruta de ramificación.

Es decir, puede hacer varias formas de recorrido.

Cuál sería el más eficiente, tendría que mirar más de cerca, no puedo hacer ese juicio en una fracción de segundo …

he entrenado, pintando con ASCII, jajaja

Aunque, supongamos que caminas hacia arriba, manualmente:

——UNA——
————— / —— \ —————
—–ANTES DE CRISTO—–
———— / – \ —— / – \ —————
———- D — E — F — G ————

Supongamos que te mueves de G.

Ahora, podría seguir intentando atravesar hacia arriba, hasta que no pueda, aunque no conozca los detalles intrincados de intentar acceder a un nodo padre superior en términos de valores nulos de C .. Tal vez, eso es un defecto.

Aunque, suponga, no lo hará.

Podría, teniendo en cuenta la profundidad, del árbol, en virtud de decir, es X profundo, mover X nodos hacia arriba, estará en la raíz.

Podría, recursivamente encadenar hacia arriba, hasta que ya no pueda acceder a un nodo, aunque sea lo mismo que las otras cosas …

Podrías, separar, todo el árbol, “doblándolo”, hacia afuera, y tomar el primer elemento, que será la raíz

Básicamente puedo seguir y seguir sobre esto, pero siento que me estoy quedando sin aliento en esto.

Creo que me entiendes, a lo que me refiero.

Normalmente, siempre tiene a mano un puntero a la raíz del árbol en alguna variable u otra.

A veces, cada nodo de árbol contiene punteros a su padre (así como a los dos hijos). En ese caso, también puede encontrar la raíz atravesando enlaces primarios, pero eso lleva más tiempo, así que realmente, solo mantenga un puntero a la raíz en una variable.

(Puede pasarlo como argumento a la función o método que está desarrollando).

More Interesting

Cómo comparar dos cadenas C para igualdad, usando una matriz de caracteres

¿Por qué es Introducción a los algoritmos una lectura obligada para convertirse en un mejor programador?

¿Cuál es el mejor algoritmo de aprendizaje automático sin supervisión para la segmentación de imágenes basada en color?

¿Cuál fue el primer juego de computadora en usar un generador de números aleatorios?

¿Cuáles son las cosas básicas en estructuras de datos y algoritmos que debo saber para las ubicaciones en el campus?

Cómo generar una lista de todas las permutaciones de una matriz 4 × 4 con solo los números 1, 2, 3 y 4 en Python

¿Qué es el algoritmo de YouTube?

¿Cómo funciona LSH, 'hashing local sensible', para calcular el valor de hash?

Cómo aprender estructuras de datos y algoritmos de manera efectiva para que pueda ser mejor en la programación competitiva a nivel principiante

¿Cómo construir un algoritmo hash? ¿Dónde puedo aprender más?

¿Qué sitio web / tutorial / video puedo usar para comprender muy bien la programación dinámica en un día?

Cómo verificar en C ++ si varias cadenas tienen una coincidencia con una sola cadena de una sola vez

Cómo calcular [matemáticas] a ^ {\ binom {n} {r}} [/ matemáticas] de manera eficiente

¿Cómo se puede observar fácilmente que la complejidad temporal del código escrito es exponencial?

¿Encontrar el número máximo de reinas que puedes colocar en un tablero de ajedrez modificado con paredes negras? Por favor, discuta el enfoque del algoritmo, la implementación y la complejidad en detalles.