Los principios generales de todas estas estructuras son las mismas sin importar el lenguaje que use. Incluso los algoritmos son similares (si no exactamente iguales) cuando se los mira desde un nivel alto.
En su ejemplo de un árbol binario en Java vs Python, en realidad ha elegido dos idiomas que son tan similares en este aspecto como para hacer que esa implementación sea una traducción directa de un idioma a otro. Sí, Python también tendría una clase de nodo con campos dentro para recibir nodos secundarios izquierdo / derecho, exactamente como lo haría en Java, incluso agregaría los mismos métodos a esa clase, lo usaría exactamente mismo detalle de manera. La única diferencia real sería que no “especifique” los tipos de esos campos, pero eso es solo debido a la tipificación dinámica de Python, la intención de cada campo sería contener un tipo de nodo o nada.
Pero lo anterior se debe a que ambos lenguajes están orientados a objetos de manera similar. ¿Qué pasa si prefieres compararlos con hacer un árbol binario en C? Todavía haría algo similar, crearía un tipo de estructura que tiene dos punteros para contener los elementos secundarios izquierdo y derecho de cada nodo. Sin embargo, las funciones que implemente para operar en esto no formarían parte de la estructura en sí, serían funciones separadas no vinculadas a ese tipo.
- Cómo instalar la siguiente compresión tar.gz
- ¿Habrá diferentes algoritmos para implementar la inserción y eliminación de una estructura de datos como b árboles?
- ¿Es el algoritmo y la metodología para corregir automáticamente las palabras mal escritas en las consultas de búsqueda de Google una "salsa secreta" o está abierto?
- ¿Cuáles son algunas aplicaciones inteligentes de búsqueda binaria?
- ¿Qué son las estructuras de datos y los algoritmos en c ++?
Como otro ejemplo que muestra cómo los lenguajes extremadamente diferentes incluso harían un algoritmo de la misma manera, solo el detalle de la ejecución es diferente: supongamos que desea duplicar una lista de números. En Java, ejecutaría una indexación de bucle for de un extremo de la lista al otro, duplicando cada vez el valor en ese índice, si no desea cambiar el original, habría creado una nueva lista para contener el da como resultado los mismos índices. ¿Qué pasa si haces esto usando un paradigma funcional en lugar de la forma imperativa de Java? Incluso en Python, lo más probable es que use algo como la generación de listas para recorrer el original mientras modifica el resultado. Por lo general, en los lenguajes FP, mapearía una función en cada elemento de la lista, esa función (en este caso) sería “duplicar este valor”. No importa cuál use, el algoritmo real sigue siendo el mismo en el sentido de que aún está cruzando la lista y realizando un cálculo en cada elemento. Es solo el detalle exacto que difiere.