6

私は Data.Tree で表現しているバラの木の構造を持っています。ツリーの各ノードには、(x,y) 座標のラベルが付けられます。特定のクエリ座標に最も近いツリー内のノードを見つけ、そのノードに子を追加する方法を実装する必要があります。

これを 2 つの操作に分割することを想定しています。

  1. ツリーをトラバースして、指定されたクエリ座標に最も近いノードを見つけます

  2. 前のトラバーサルで見つかったノードを取得し、上記のクエリ座標でラベル付けされた子をそれに追加します

これを行う唯一の方法は、ステップ 1 で Data.Tree.Zipper を使用してツリーをトラバースし、ステップ 2 でそのジッパーを使用して特定の場所にノードを挿入することです。

2 つの質問があります。

  • これは問題にアプローチする効果的な方法ですか?

  • その場合、Data.Tree.Zipper の関数を使用して上記の手順 1 を実装するにはどうすればよいですか? 深さと幅という 2 つの次元での再帰が必要なため、ツリー トラバーサルを実装するのは難しいと思います。

4

2 に答える 2