할일
- 파일을 읽어온다.
- 파일을 정재하여 리스트에 넣는다.
- 간단한 트리구조로 변환할 함수를 만든다
- 트리의 루트를 글로벌로 하나 생성한다.
- 트리구조의 리스트로 변환한다
- 전위, 후위, 중위 탐색을 함수를 만든다.
- 출력한다.
def readFile(filename):
with open(filename) as file:
return [ x.strip('\n').replace(' ','') for x in file.readlines()]
list_ = readFile('1991.txt')
3. 간단한 트리구조로 변환할 함수를 만든다. 4. 트리의 루트를 글로벌로 하나 생성한다.
def my_tree(r):
return [r, [], []]
root = None
5. 트리구조의 리스트로 변환한다.
def add(data, left, right):
global root
if root is None:
if data != '.':
root = my_tree(data)
if left != '.':
root[1] = my_tree(left)
if right != '.':
root[2] = my_tree(right)
return root
else:
return search(root, data, left, right)
def search(root, data, left, right):
if root is None or root == []:
return root
elif root[0] == data:
if left != '.':
root[1] = my_tree(left)
if right != '.':
root[2] = my_tree(right)
return root
else:
search(root[1], data, left, right)
search(root[2], data, left, right)
for l_ in list_[1:]:
add(l_[0],l_[1],l_[2])
6. 전위 후위 중위 탐색 함수를 만든다.
def preorder(root):
if root:
print(root[0], end='')
if root[1]:
preorder(root[1])
if root[2]:
preorder(root[2])
def inorder(root):
if root:
if root[1]:
inorder(root[1])
print(root[0], end='')
if root[2]:
inorder(root[2])
def postorder(root):
if root:
if root[1]:
postorder(root[1])
if root[2]:
postorder(root[2])
print(root[0], end='')
7. 출력한다.
preorder(root) print() inorder(root) print() postorder(root) print()
def search()는 어디에 있죠?
답글삭제이제 봤네요. 이제 보이실 겁니다.
삭제