OCaml - 在inorder(二叉树)中设置对下一个节点的引用

时间:2013-12-08 18:02:34

标签: ocaml inorder

输入'a tree = |空| 'a *'节点'树''树'*树ref ;;

我们希望为每个节点树ref设置inorder;

例如

Node (1, Node(2, Empty, Empty, ref Empty), Node(3, Empty, Empty, ref Empty), ref Empty) )
The result is:

Node (1, Node(2, Empty, Empty, content = {Node (1....) }).....

1 个答案:

答案 0 :(得分:0)

这并不难:你做一个顺序遍历,同时路过(和 返回)前一节点中包含的引用。当你拿到时 在给定节点上,将前一个节点的引用设置为 当前节点。如果将每个节点分配给前一个节点的引用 一,这意味着每个节点的引用都包含下一个节点。

在示例中,inorder遍历遍历树中 订单:2 1 3

当您在节点2时,将其ref返回给调用者,即 节点1.当您到达节点1时,将节点2的ref设置为 指向节点1,并将节点1的ref传递给节点3. 如果您在节点3,则将节点1的ref设置为指向节点3.

你需要决定为第一个节点做些什么(分配一个假人 参考启动过程)和最后一个节点(可能是设置 它对Empty的引用,虽然有时它可能有用 将它设置为第一个节点。)

我有工作代码(15行)。我不会发布它,因为那会 破坏假定的分配。