0
SMLで課題があるので、少し手伝ってください。 > int型のバイナリツリーの サイズを返す -SMLバイナリツリーリダクション機能
問題はBTREE」タイプの機能btree_sizeを書くこの
のようになります。 (バイナリツリーのサイズは、バイナリツリー内の 要素の数です)。たとえば、btree_size(Node(Leaf、1、 Node(Leaf、2、Leaf)))は2を返す必要があります。関数は btree_reduce関数を使用する必要があります。
がbtree_reduce機能は、この
(* A reduction function. *)
(* btree_reduce : ('b * 'a * 'b -> 'b) -> 'b -> 'a tree -> 'b) *)
fun btree_reduce f b bt =
case bt of
Leaf => b
| Node (l, x, r) => f (btree_reduce f b l, x, btree_reduce f b r)
どのように世界で私はBTREEを取り、私の木の大きさを与えることを減らす機能を使用していますbtree_size機能を作るのですか?
ありあり再帰的に関数は微風です。 楽しいbtree_sizeのBT = => 0 リーフのBT ケース|私は1を追加するために減らす機能を伝える方法がわからないノード(BTL、X、BRT)=> btree_size BTL + 1 + btree_size BTR毎回。 reduce( "add it to" 0、bt) 私はちょうど1つずつ追加する方法を知らない。 – user559399
私はあなたがすでにそれを理解したと思う。 btree_reduceに渡す関数fは3つの引数をとります。最初の引数と3番目の引数は、2つの再帰呼び出しの結果です。 btree_sizeの誘導の場合、結果はx + 1 + yの形式をとります。ここでx = btree_size btl、y = btree_size btrです。もっとヒントが必要ですか? –
はい、私はそれを理解しています。私はそれを行うことを指示する削減するために渡す関数を作成する方法を知らない。私が試したことはすべて集計されていません。外部ヘルパー関数を作成する必要がありますか、これを行うためのSML機能が組み込まれていますか? – user559399