如何在OCAML中分解2-3-4树

如何在OCAML中分解2-3-4树,ocaml,red-black-tree,2-3-4-tree,Ocaml,Red Black Tree,2 3 4 Tree,我想把2-3-4树分解成小节点 以下是我正在使用的类型: 类型ele=int 类型颜色=红色|黑色 ab型=Vide |节点(ele*color*ab*ab*ab) ab234型=参考 |节点_1(ele*ab234*ab234) |(ele*ele*ab234*ab234*ab234)的节点_2`` |节点_3(ele*ele*ele*ab234*ab234*ab234*ab234*ab234) 我的映射基于以下内容: 我需要帮助做我的转变。我尝试使用此函数,但它似乎不起作用,它确实会分解

我想把2-3-4树分解成小节点

以下是我正在使用的类型:

类型ele=int
类型颜色=红色|黑色
ab型=Vide |节点(ele*color*ab*ab*ab)
ab234型=参考
|节点_1(ele*ab234*ab234)
|(ele*ele*ab234*ab234*ab234)的节点_2``
|节点_3(ele*ele*ele*ab234*ab234*ab234*ab234*ab234)
我的映射基于以下内容:

我需要帮助做我的转变。我尝试使用此函数,但它似乎不起作用,它确实会分解根,但不会继续到分支:

让rec eclat=函数
|视频->视频
|节点_3(r,x,y,ag,mg,md,ad)->eclat(节点_1(x,(节点_1(r,ag,mg)),节点_1(y,md,ad)))
|节点_2(r,x,ag,ml,ad)->eclat(节点_1(r,(节点_1(x,ag,ml)),ad))
|_u->failwith(“zebi”);;

如果我按您现在的方式输入您的
eclat
函数,我会得到以下结果:

提示:如果这是一个递归定义,您应该在第1行添加'rec'关键字

所以这是一个问题


我还注意到,您将
ab
更改为
ab234
,但没有更改类型内部的外观。因此
ab234
类型的内容都被定义为
ab
类型。这似乎不正确。

StackOverflow主要用于帮助您解决某些代码中的特定问题。否则就好像你让别人帮你写作业一样。因此,您应该先编写一些代码来进行转换,然后在这里询问有关代码的问题。到目前为止,我们观察到有两种类型,分别命名为
ab
。第二个选项将隐藏第一个选项,因此不能同时使用这两个选项。这两种树类型需要有不同的名称。很抱歉,我没有注意到我的函数没有出现,我编辑了它,所以现在它被修复了“它似乎不工作”是什么意思?哪种方式不起作用?你怎么知道的?你想让我们猜猜吗?你能举一个输入和预期输出的例子吗?我在图2-3-4中用了双色树