【发布时间】:2016-01-22 21:25:52
【问题描述】:
datatype tree = br of tree*int*tree | lf
如果左侧分支的值总是低于根,而右侧的分支总是高于根,则该树是有效的。 例如:
valid(br(br(lf,2,lf),1,lf)) = false;
valid(br (br (lf, 2, br (lf, 7, lf)), 8, lf)) = true;
我正在寻找这样的东西,除了我不知道如何将内部分支的整数与根的整数进行比较。
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;
【问题讨论】:
标签: validation types tree sml