es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Encontrar el big O de esta función que escribí para imprimir todas las palabras en un trie.

Hice este trie:

class Trie:
    def __init__(self):
        self.root = {}
        self.end = '\0'

    def add(self,text):
        node = self.root 
        for letter in text:
            if letter in node:
                node = node[letter]
            else:
                node[letter]={}
                node = node[letter]
        node[self.end] = True


    def addAll(self,lst):
        for word in lst:
            self.add(word)

Y creé esta función para imprimir todas las palabras del trie:

def printWords(root,word=""):
    if root==True:
        print(word[:-1])
        return

    for letter in root:
        printWords(root[letter],word+letter)

¿Cómo puedo encontrar el big O de esta función printWords?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El O grande de la función printWords es O(n), donde n es el número total de nodos en el trie. Esto se debe a que la función visita recursivamente cada nodo en el trie exactamente una vez, y el número de nodos en un trie es proporcional al número total de caracteres en todas las palabras que se han agregado al trie. Por lo tanto, el tiempo de ejecución de la función es directamente proporcional al tamaño de los datos de entrada, es decir O(n).

Comments are closed.