この質問は学校(宿題)に関するものなので、私はコードを求めていません。コードは必要ありません。ただのアイデアです。葉のリストと二分木の内部ノードのリストの2つのリストを返す関数を作成する必要があります。私のアルゴリズムは次のとおりです。
1)左右両方のサブツリーがNoneの場合、それは葉であるため、葉のリストに追加します。
2)そうでない場合は、それを内部リストに追加し、左側のサブツリーで関数を呼び出し、存在する場合は右側で関数を呼び出します。
これは私が書いたコードです:
def leaves_and_internals(self):
leaves = []
internals = []
if self.left is None and self.right is None:
leaves.append(self.item)
else:
internals.append(self.item)
if self.left != None:
leaves_and_internals(self.left)
else:
leaves_and_internals(self.right)
return internals, leaves
アルゴリズムは正しいと確信していますが、ノードで再帰するたびに、リストがリセットされると思います。どうすればこれを回避できますか?
どんな助けでも大歓迎です。ありがとう