2014-12-18 9 views
0

파일의 단어가 포함 된 이진 검색 트리가 있으며 이제는 단어를 검색하고 싶습니다.이 단어의 길이와 횟수가 반환되어야합니다. 루트에서 시작하는 방법과 거기에서 진행하는 방법을 잘 모르겠습니다. 약간의 예를 든 약간의 설명이 많이 감사 할 것입니다.파이썬 : 이진 검색 트리에서 검색

나는 내 현재 코드 첨부하십시오 BST에 추가가를 넣어 그 값 있어야 할 곳에 검색하고 포함하는 것이

class Node: 
def __init__(self, value, left=None, right=None): 
    self.left = left 
    self.right = right 
    self.value = value 
    self.count = 1 

def add(self, value): 
    if self.value == value: 
     self.count += 1 
    elif value < self.value: 
     if self.left is None: 
      self.left = Node(value) 
     else: 
      self.left.add(value) 
    else: 
     if self.right is None: 
      self.right = Node(value) 
     else: 
      self.right.add(value) 

def printTree(self): 
    if self.left is not None: 
     self.left.printTree() 
    print(str(self.value) + " " + str(self.count)) 
    if self.right is not None: 
     self.right.printTree() 





def processFileContent(file): 
    words = [] 
    for line in file: 
     unprocessedWords = re.split(" ", line) 

    for word in unprocessedWords: 
     word = word.lower() 
     if word.isalpha(): 
      words.append(word) 

return words 


def processFile(): 
    file = open("text.txt", "r") 
    words = processFileContent(file) 
    file.close() 
    return words 


def createTree(words): 
    if len(words) > 0: 
     tree = Node(words[0]) 
     for word in words: 
      tree.add(word) 
     return tree 
    else: 
     return None 

def main(): 
    words = processFile() 
    tree = createTree(words) 
    tree.printTree() 

답변

0

나는 이런 식으로했다하고 일을 할 것 같다

def search(tree, word): 
    node = tree 
    depth = 0 
    count = 0 
    while True: 
     print(node.value) 
     depth += 1 
     if node.value == word: 
      count = node.count 
      break 
     elif word < node.value: 
      node = node.left 
     elif word > node.value: 
      node = node.right 

    return depth, count 

def main(): 
    print(search(tree, "a")) 
1

참고; 그래서 당신이 하나를 만들 수 있다면, 당신은 하나를 검색 할 수 있어야합니다.

관련 문제