0
각 노드가 자식 노드에 연결되어있는 비 - 이진 트리를 설정하는 프로그램을 만들려고합니다. 이 테스트 예제에서는 간단히하기 위해 이진 트리를 사용했습니다. 입력 내용은 다음과 같습니다.비 - 이진 트리 재귀
1
3 5
4 6
(탭 문자는 숫자 사이에 사용됩니다).
4
/
3
/\
1 6
\/
5
\
4
: 트리 다이어그램은 다음과 같이 보일 수 나는 그 아이가 3, 5 인으로, 루트 (1)에서 시작하여 트리를 생성하기 위해 노력하고, 그 각 노드는 아이들 4, 6 이
내 트리에 자식을 추가하려고하면 내 재귀 함수를 호출하는 무한 루프가 생성됩니다. 나는 루프에 1 인 지점 함수를 호출 그것에 문제를 좁혀하지만, 여기에 코드입니다했습니다
# input is a list of branch values
file = open("treehash.txt","r")
input = file.readlines()
for line in range(len(input)):
input[line] = input[line].rstrip().split('\t')
file.close()
# create the tree node
class Tree(object):
value = None
children = []
def __init__(self, value):
self.value = value
# adds all children to a given parent
def set_children(parent, branch):
if branch < len(input) - 1:
for num in input[branch + 1]:
parent.children.append(Tree(int(num)))
for child in parent.children:
set_children(child, branch + 1)
# store all roots in array
roots = []
for root in range(len(input[0])):
roots.append(Tree(int(input[0][root])))
set_children(roots[root], 0)
4 경우, 6, 당신이 그래프 아닌 나무가있다. – Blckknght
4와 6은 3과 5에 고유합니다.이 예에서 각각 두 번입니다. 그러나 여러 뿌리로 시작할 경우 그래프가 있다고 가정합니다. – adapap