私は、ある人が他の人を招待することができ、招待された人が招待された場合にのみ招待が有効な「顧客招待」については問題があります。スカラツリー/グラフ実装
この問題を解決するために、グラフアルゴリズムではなくツリーアルゴリズムを書くことを考えていました。
私はScalaで、このツリー構造を書き込もうとし、ここで私が始めた方法ですよ:
case class MyNode(key:Int, children:Option[List[MyNode]] = None)
class MyNodeManager {
def find(key: Int, tree: Option[List[MyNode]]) = tree match {
case None => None
case (h :: t) =>
println("aa")
/*if(h.key == key)
Option(h)
else
find(h ::: t)
*/
}
}
入力のようなものになります:私は働きたい
val invites = List((1, 2), (1, 3), (3, 6))
オプションの[List [MyNode]]は子供がオプションなので、ノードが招待されている場合は、代わりに空のリストに値を設定したいと思います。
ツリーは私の問題を解決するのに最適な構造ですか、グラフなどに行きましょうか(グラフ内のノードには複数の子供がいますか?)そして、もう一つの質問は...それらの線(h :: t)と(h ::: t)の違いは何ですか?
次のコードはコンパイルエラーがあります。
Error:(16, 13) constructor cannot be instantiated to expected type;
found : scala.collection.immutable.::[B]
required: Option[List[MyNode]]
case (h :: t) =>
^
私はオプション[リスト]で動作することができますどのように?
驚くばかりの回答とお礼をお願いします! – placplacboom