Тр ie реализация в Python - PullRequest
       9

Тр ie реализация в Python

0 голосов
/ 10 апреля 2020

Я попытался прояснить эту реализацию. Поэтому я создал hasChild функцию Node. Но почему я получаю эту ошибку?

У объекта 'NoneType' нет атрибута 'hasChild'

class Node():
    def __init__(self,word):
        self.value = str(word)
        self.children = {}   
        self.isEndOfWord = False

    def hasChild(self,ch):
        return ch in self.children.keys()

    def addChild(self,ch):
        nodenew = Node(str(ch))
        self.children[ch] = nodenew

    def getChild(self,ch):
        return self.children.get(ch)

class Trie():
    def __init__(self):
        self.root = Node('')

    def insert(self,children):
        current = self.root
        for ch in children:
            if (current.hasChild(ch) is False):
                current.addChild(ch)
            current = self.root.getChild(ch)
        current.isEndOfWord = True

1 Ответ

0 голосов
/ 11 апреля 2020

Я изменил current.hasChild (ch) - False в not current.hasChild (ch) и current = self. root .getChild (ch) в current = current.getChild (ch) функции вставки. Оно работает. Большое спасибо!

class Node():
def __init__(self,word):
    self.value = str(word)
    self.children = {}   
    self.isEndOfWord = False

def hasChild(self,ch):
    return ch in self.children.keys()

def addChild(self,ch):
    nodenew = Node(ch)
    self.children[ch] = nodenew

def getChild(self,ch):
    return self.children.get(ch)

class Trie():
def __init__(self):
    self.root = Node('')

def insert(self,children):
    current = self.root
    for ch in children:
        if (not current.hasChild(ch)):
            current.addChild(ch)
        current = current.getChild(ch)
    current.isEndOfWord = True

trie = Trie()
trie.insert('cat')
trie.insert('can')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...