私のツリーは以下のように定義されています: (これは理解を深めるためのもので、私のデータ型ははるかに複雑です。)
type tree = {
mutable value : int;
mutable nodes : tree list
}
以下に示すように、0 と 1 のシーケンスを見つける必要があります。
1
|
0 0
\ /
1
|
1
出力はルートと 0 と 1 のシーケンスになります。これを行うコードは次のとおりです。しかし、それは必要ないので変更する必要があります。)
let rec getSequence tree =
match tree.value with
| 0 ->
if (List.length tree.nodes) = 1 then
let nextTree = List.hd tree.nodes in
match nextTree.value with
| 1 ->
nextTree.nodes <- [];
tree.nodes <- [nextTree];
[tree]
| 0 -> List.concat (List.map (fun t -> getSequence t) nextTree.nodes)
else List.concat (List.map (fun t -> getSequence t) tree.nodes)
| 1 -> List.concat (List.map (fun t -> getSequence t) tree.nodes)
何らかの理由でコードを実行すると、例外 Stack_overflow が発生します。誰でも私を助けることができますか?