Tree 在'中添加元素;奥卡姆树

Tree 在'中添加元素;奥卡姆树,tree,ocaml,binary-tree,Tree,Ocaml,Binary Tree,所以,这是我的问题。。 我需要写一个函数,在一棵树中添加元素,它是一棵二叉树,所以它必须组织得很好。问题在于如何定义我的树。 我有一棵树: type 'a tree = { mutable cont:'a; mutable left:'a bin_tree; mutable right:'a bin_tree } and 'a bin_tree = Empty |Node of 'a bin_tree;; 所以,当我编写函数在这个树中添加元素时,它表示树的类型是'

所以,这是我的问题。。 我需要写一个函数,在一棵树中添加元素,它是一棵二叉树,所以它必须组织得很好。问题在于如何定义我的树。 我有一棵树:

type 'a tree = {
  mutable cont:'a;
  mutable left:'a bin_tree;
  mutable right:'a bin_tree
  }
  and 'a bin_tree = 
  Empty
  |Node of 'a bin_tree;;
所以,当我编写函数在这个树中添加元素时,它表示树的类型是'a tree',我使用的函数是'a bin_tree'

我尝试了很多不同的方法来编写这个函数,但我得到了相同的错误。 我上次使用的功能是:

let rec dodajVDrevo x = function
Empty -> Node{cont=x; left=Empty; right=Empty}
|Node{cont; left; right} -> if x < cont then Node{cont; left= dodajVDrevo x left; right}
else if x > cont then Node{cont; left; right = dodajVDrevo x right}
else Node{cont; left; right};;
让rec dodajVDrevo x=函数
Empty->Node{cont=x;left=Empty;right=Empty}
|节点{cont;left;right}->如果xcont,则节点{cont;left;right=dodajVDrevo x right}
else节点{cont;左;右};;
请帮帮我,给我一些线索


谢谢大家!

节点构造函数应该采用一个
'树
,而不是一个
'树

是的,我知道,但我不知道怎么做。你是什么意思?只需将“一棵bin_树的节点”的文本替换为“一棵树的节点”。为什么要将左、右和cont定义为可变的?您的add函数(dodajVDrevo)已经是纯函数。因为它看起来像是家庭作业,我假设你的练习是为了熟悉函数式编程风格;不脏的c类ocaml代码,具有易变性。这是一个重复: