我试图用从零开始并递增的数字来标记二叉树的叶子。这是我对二叉树的定义
type btree = I of int | Node of string * btree * btree
我的函数在应用时应该用从最左边的叶子开始的数字标记树叶,用零标记。例如。Node("a", Node("b", I 25, I 54), Node("c", I 12, I 47)) 应该返回树 Node("a", Node("b", I 0 , 我 1), 节点("c", 我 2, 我 3))。我怎样才能做到这一点?我尝试编写代码,但没有给出合适的结果。这是我的代码:
let mark bst =
let number x = function
|Node(a, I b, I c) -> Node(a, I x, I (x + 1))
|Node(a, b, I c) -> Node(a, (number x b), I(x + 1))
|Node(a, I b, c) -> Node(a, x, (number (x + 1) c)
|Node(a, b, c) -> Node(a, (number x b), (number x c))
in number 0 bst
这段代码编译得很好,但是从一开始就分别对左右子树进行编号,即 0。请帮忙!