0

サイズ 7、高さ 3 の二分探索木を構築しています。関数を使用して生成するのではなく、ハードコードするだけで済みます。

これは私がハードコーディングしたツリーです

Node (Node (Node (Empty, 0, Empty), 1, 
Node (Empty, 3, Empty)), 5
Node (Empty, 7, Node (8, 9, Empty))))

私が望むのは、ノード 9 に 2 つの子 (8 と空) があることです。ただし、「この式は int 型ですが、int ツリー型の式が期待されていました」という 8 のエラーが表示され続けます。どうすればこれを修正できますか?

ありがとう!

4

2 に答える 2

3

8リーフには書き込みできません。あなたは書く必要がありますNode (Empty, 8, Empty)

type tree = Empty | Node of tree * int * tree

(* the tree

           5
         /  \
        /    \
       1      7         
     /  \      \
    0    3      9
               /
              8
*)
let t =
  Node (
    Node (Node (Empty, 0, Empty),
          1, 
          Node (Empty, 3, Empty)),
    5,
    Node (
      Empty,
      7,
      Node (Node (Empty, 8, Empty),
            9,
            Empty)
    )
  )

(* With an auxliary function we can do this to get the same tree: *)

let leaf k = Node (Empty, k, Empty)

let t' =
  Node (
    Node (leaf 0, 1, leaf 3),
    5,
    Node (Empty, 7, Node (leaf 8, 9, Empty)))
于 2013-02-02T22:56:47.527 に答える
2

Node の最初の要素は、 のようなものではなく、ツリーでなければなりませんint

したがって、木が期待される場所に 8 を配置することはできません。おそらく、Node (Empty, 8 Empty)代わりに を使用するつもりでし8た。

于 2013-02-02T22:28:55.257 に答える