現在、F#でバイナリツリーを構築していますが、ほぼ完成しています。私はこのタスクの最後の割り当てにいます。ここでは、バイナリツリーの文字列表現を作成することになっています。ツリーは次のように表示される必要があることを意味します。
例:("node" "value" ("node" "value" "Empty" "Empty") Empty)
<-2つの空のサブツリーと空の右サブツリーを持つノードを持つ左側のサブツリーを持つルートノードを持つツリー。
私の木は次のようになります。
type Btree<'a when 'a: comparison> =
|Node of 'a * Btree<'a> *Btree<'a>
|Leaf of 'a
|EmptyTree
これは私がどこまで得たかです:
let rec treeToString bintree =
match bintree with
|EmptyTree -> "Empty" //Check if the tree is empty
|Node(inner, left, right) when inner = 0 -> "Empty"
|Leaf x-> "Node"+x.ToString() //Returns "Node" and its value
|Node(inner, left, right) when inner <> 0-> treeToString left //Need some kind of output here, but what?
|Node(inner, left, right) when inner <> 0->treeToString right
私のメソッドは1つの値しか返さないので、私のソリューションの実際の問題は再帰部分を正しく取得することです。
だから私の質問は:私はここで何が間違っているのですか?