6.23. Ejercicios de programación¶
Amplíe la función
construirArbolAnalisispara que pueda manejar expresiones matemáticas que no tienen espacios entre cada carácter.Modifique las funciones
construirArbolAnalisisyevaluarpara que puedan manejar las sentencias booleanas (and, or, y not). Recuerde que “not” es un operador unitario, por lo que esto complicará un poco su código.Utilizando el método
encontrarSucesor, escriba un recorrido inorden no recursivo para un árbol binario de búsqueda.Modifique el código de un árbol binario de búsqueda para que sea hilado. Escriba un método de recorrido inorden no recursivo para el árbol binario de búsqueda hilado. Un árbol binario hilado mantiene una referencia de cada nodo a su sucesor.
Modifique nuestra implementación de árbol binario de búsqueda para que maneje correctamente claves duplicadas. Es decir, si una clave ya está en el árbol, entonces la nueva carga útil debería sustituir a la antigua en lugar de agregar otro nodo con la misma clave.
Cree un montículo binario con un tamaño de montículo limitado. En otras palabras, el montículo sólo realizará un seguimiento de los
nítems más importantes. Si el montículo crece en tamaño a más denítems, se eliminará el ítem menos importante.Modifique la función
imprimirExpresionpara que no incluya un par de paréntesis ‘extra’ alrededor de cada número.Utilizando el método
constructionMonticulo, escriba una función de ordenamiento que pueda ordenar una lista en tiempo \(O(n\log{n})\).Escriba una función que tome un árbol de análisis para una expresión matemática y calcule la derivada de la expresión con respecto a alguna variable.
Implemente un montículo binario como un montículo máx.
Utilizando la clase
MonticuloBinario, implemente una nueva clase llamadaColaPrioridad. Su claseColaPrioridaddebe implementar el constructor, además de los métodosagregaryavanzar.