2013-05-21 52 views
1

因此,這裏是我的問題。 我需要編寫一個函數,它將在樹中添加元素,它是一棵二叉樹,因此它必須組織良好。問題在於如何定義我的樹。 我有這樣的樹:在Ocaml的'樹中添加元素

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;; 

所以,當我寫的功能,此樹添加元素它說,該樹的類型爲「一棵樹,我使用的功能」一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};; 

請幫幫我,給了一些線索。

謝謝!

+0

爲什麼你將left,right和cont定義爲mutable?你的add函數(dodajVDrevo)已經是純粹的了。 因爲它看起來像功課,我認爲你的鍛鍊感覺得到功能性編程風格的熟悉;不會變髒的c-like ocaml代碼。 – rafix

+0

這是一個重複的:http://stackoverflow.com/questions/16507273/ocaml-tree-simple-functions – Thomash

回答

2

構造函數Node應取'a tree而不是'a bin_tree

+0

是的,我意識到這一點,但我不知道該怎麼做。 – Marko

+2

你是什麼意思?只需將'bin_tree'的文本'|節點替換爲''樹'的節點。 – cygin