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に固有のものです。この例ではそれぞれ2つの出現があります。しかし、私は複数のルーツから始めるとグラフがあると思います。 – adapap