Puede implementar un nodo de árbol como una clase de Python con dos campos que hacen referencia a objetos de la misma clase. Estos serán nodos interiores del árbol. Luego, decida qué desea hacer con los nodos hoja. Podría usar la misma clase y dejar que un nodo hoja sea como un nodo interior pero con valores nulos (es decir, Ninguno en Python) para los elementos secundarios izquierdo y derecho. O bien, podría definir una clase diferente para representar nodos hoja. El primer enfoque es más sencillo si sus nodos interiores deben contener la misma información que sus nodos hoja. Este último es más apropiado si sus nodos hoja contienen información que no está presente en los nodos interiores.
La estructura de árbol de expresión en mi proyecto Calculadora simbólica de un curso introductorio es un árbol binario. Mire la parte inferior de la página de descripción del proyecto para encontrar un enlace al código fuente. Este es un poco más complicado que mi descripción anterior: los nodos de árbol están definidos por la clase “Expr”, y los diferentes tipos de nodos interiores y de hoja están definidos por las subclases de Expr. ConstExpr y VarExpr son los nodos hoja, y AddOpExpr, MulOpExpr y DivOpExpr (que son subclases de BinOpExpr) son los nodos interiores. (Este código es Python 3 y no se ejecutará en Python 2 sin modificación).
También puede definir un árbol binario de manera más simple utilizando la estructura de datos de lista incorporada de Python. Por ejemplo, [‘+’, [‘*’, 3, 4], 5] es una representación de árbol de 3 * 4 + 5.
- ¿Cuáles son las características de los árboles de coníferas y cuáles son algunas plantas / árboles con aspectos similares?
- ¿Cuál es la mejor manera de procesar consultas de accesibilidad en un DAG con restricciones?
- Cómo resolver este problema usando árboles de segmentos
- ¿En qué idioma debo estudiar estructuras de datos y algoritmos? ¿Y por qué?
- ¿Son los métodos en algoritmos Java?