¿Qué es el recorrido del árbol y por qué los necesita?

Se puede usar una estructura de datos de árbol para representar relaciones jerárquicas. HTML y XML son ejemplos de lenguajes de marcado que utilizan una estructura de árbol, es decir, una raíz que tiene ramas secundarias, que podrían tener sus propias ramas secundarias, etc.

El recorrido está navegando alrededor de este árbol. Un ejemplo son las rutas de archivos en una computadora. Tiene un directorio raíz (por ejemplo, c: \ u otra unidad en Windows) que tiene ramas secundarias que pueden o no tener sus propios hijos.

p.ej

Supongamos que desea encontrar un archivo llamado MissingIntegerTask.cs pero no sabe en qué directorio se encuentra. Si utiliza una de las herramientas integradas para buscar por nombre de archivo (o por contenido), este programa atravesará el árbol ( desde el punto desde el que comienza la búsqueda) para intentar encontrar una coincidencia de patrón.

Las búsquedas se pueden realizar primero en profundidad, por ejemplo, en el ejemplo anterior, primero busque en el directorio actual, luego en bin, luego bin \ Debug, luego obj, luego obj \ Debug y así sucesivamente o en primer lugar, por ejemplo, actual, luego bin, luego obj, …

Otro tipo de datos similar es un gráfico. Un árbol es un tipo de gráfico restringido en el que cada nodo solo puede tener un solo padre donde, como en un gráfico, cada nodo podría conectarse a varios otros y estas relaciones no se consideran padre / hijo. Por ejemplo, imagine una red social donde cada persona es un nodo y los bordes son las relaciones entre ellos. Esto puede ser un gráfico dirigido (por ejemplo, Twitter donde seguir a alguien no implica una relación recíproca) o no dirigido como Facebook, donde ser amigos es recíproco.

El recorrido es simplemente una forma de pasar por encima de cada nodo en el árbol a su vez (generalmente realizando una acción en él como mostrarlo). Tenga en cuenta que no voy a hablar sobre cosas como los gráficos (todavía) … Creo que debería entender los árboles antes de comprender los gráficos (muchos de ellos son lo mismo y puede confundirse si intenta hacerlo todo en una vez, pero puede tener en cuenta que los recorridos también se aplican a los gráficos).

¿La necesidad de ello? Bueno, los árboles generalmente se usan como una forma eficiente de almacenar datos en algún tipo de orden (tal vez algo como alfabéticamente, o tal vez para mostrar alguna estructura detrás de los datos, como la jerarquía de objetos en un archivo HTML). Cuando desee mostrar o calcular cosas en ese orden, debe atravesar el árbol. Y por lo tanto, en lugar de volver a escribir el código cada vez para pasar de un nodo a otro, debe escribir una función transversal para que pueda llamarlo y realizar la acción específica que desea en cada nodo.

Piense en los recorridos como el mismo principio que utiliza para iterar sobre una matriz o enumerar cualquier otra colección. De hecho, también podría llamar a los otros recorridos transversales, es solo que decidir qué nodo de la colección “atravesar” a continuación es mucho más trivial que hacerlo en un árbol. Por lo tanto, los recorridos generalmente se refieren a árboles, mientras que para otras colecciones se llaman iteraciones o enumeraciones.

More Interesting

¿Cómo debo practicar para poder asear la mayoría de los concursos Gold de USACO?

¿Nuestro código genético utiliza algoritmos de compresión?

¿Cuáles son las situaciones en las que uno puede usar ArrayList y otras situaciones para usar solo LinkedList?

¿Cuáles son algunos algoritmos interesantes que se han encontrado en la naturaleza?

¿Es realmente necesario que un programador aprenda estructuras de datos y algoritmos?

¿Cuáles son las listas vinculadas en Java y qué las hace mejores que las matrices normales?

¿Existe alguna fórmula o algoritmo que determine / calcule los precios del gas o del petróleo?

¿Qué algoritmo se usa para contar la cantidad de personas en un video?

¿Alguna vez ha enviado un artículo científico sobre un algoritmo que funciona tan bien como los métodos más modernos pero realmente no sabe por qué? ¿Puedes decir 'tal vez' al explicar tu método?

Cómo saber si / cuándo puede aplicar la manipulación de bits para resolver un problema

Dado un conjunto entero tal que cada elemento ocurre 3 veces, excepto un elemento, que ocurre solo una vez, ¿cómo encuentro ese único elemento en el espacio O (1) y en la complejidad del tiempo O (n)?

Cómo encontrar un trabajo de programación de algoritmos y no solo escribir aplicaciones CRUD

¿Se puede resolver un cubo de Rubik sin sus algoritmos?

¿Cuáles son algunas aplicaciones prácticas del sistema binario?

¿Cuál es la diferencia entre consultas DNS iterativas y recursivas?