datatype tree = br of tree*int*tree | lf
如果左側分支的值總是低於根,而右側的分支總是更高,那麼該樹是有效的。 例如:SML - 檢查樹數據類型是否有效的函數
valid(br(br(lf,2,lf),1,lf)) = false;
valid(br (br (lf, 2, br (lf, 7, lf)), 8, lf)) = true;
我在尋找這樣的somethine,但我不知道如何內分支機構的整數比較根的整數。
fun valid(lf)=true
| valid(br(left,x,right)) = valid(left) andalso valid(right);
編輯: 到目前爲止,我想出這個(但仍然不檢查所有的整數對所有的節點上,只需1個節點以上..它關閉,但沒有雪茄)
fun valid(lf)=true
| valid(br(lf,x,lf)) = true
| valid(br(lf,x,br(left2,z,right2))) = if x<z then valid(br(left2,z,right2)) else false
| valid(br(br(left,y,right),x,lf)) = if y<x then valid(br(left,y,right)) else false
| valid(br(br(left,y,right),x,br(left2,z,right2))) = if y<x andalso x<z then valid(br(left,y,right)) andalso valid(br(left2,z,right2)) else false;