私は同じ配列のいくつかの場所へのバックポインタのリストを格納する2D配列を持っています。 2d配列の最後のエントリから、バックポインタが格納されていないエントリに移動する必要があります。技術的には、非バイナリツリーを横切るようなものです。非バイナリツリーのルートからリーフまでのすべてのパスを見つける最適化された方法
私の現在の素朴な実装は
def traverse_tree (root,cur_path,backpointer_array,pathlist):
print "adding root " + str(root)
cur_path.append(root)
children = backpointer_array[root[0]][root[1]]
if(len(children)==0):
pathlist.append(cur_path)
else:
for child in children:
traverse_tree(child,cur_path[:],backpointer_array,pathlist)
ある行列のサイズが小さい場合、コードは正常に動作します[5 * 5]が、私は大きな行列[50×500]、コードでそれを実行しようとすると、永遠に実行されます。この実装を最適化する方法はありますか?