私は、各ノードが "order"によって与えられたいくつかの子を持っている(ただし、各子は1つのノードしか持たない)ツリー用のPythonクラスを作成しています。私は、インデックスiのノードの子を返すメソッドchildren(self、i)を持っています。私は、インデックスiで子の親を取得するparent(self、i)を実装する必要があります。ここでPython - フラットなリストツリーの実装:与えられた子、親を得る?
は、私がこれまで持っているものです。
class Tree:
def __init__(self, order=2, l=[]):
self._tree = l
self._order = order
def children(self, i):
left = self._tree[(i+1)*self._order-1]
right = self._tree[(i+1)*self._order]
return [left, right]
def parent(self, i):
if i>len(self._tree):
return ValueError
elif i==0:
return None
else:
#get parent of node i
順に代表される例ツリー= 2とリスト[45、2、123、1、8、40、456]は次のようになります。
45
/ \
2 123
/\ / \
1 8 40 456
私は子供のために私が使った方法を逆にする方法があることは知っていますが、私はどうしたらよいか分かりません。
nはパラメータか、これは常にバイナリツリーになりますか? – user2357112
申し訳ありませんが、子供の数は入力「注文」によって与えられます。それをより明確にするための編集 –
あなたの 'children'メソッドは破棄されます。正確に2人の子供がいると仮定しています。 – user2357112