【发布时间】:2016-09-03 18:24:30
【问题描述】:
我是 SML 的新手,正在练习树遍历。 这是问题的设置。
datatype 'a bTree = nil | bt of 'a bTree * 'a * 'a bTree;
我需要编写一个接受二叉树的函数 inorder 并在中序遍历中返回树中所有成员的列表。
我写了这行:
fun inorder(nil) = nil
| inorder(bt(left,key,right)) = inorder(left) @ [key] @ inorder(right);
但遇到一些错误,不知道如何解决:
Error: operator and operand don't agree [tycon mismatch]
operator domain: 'Z list * 'Z list
operand: 'Z list * 'Y bTree
in expression:
(key :: nil) @ inorder right
Error: operator and operand don't agree [tycon mismatch]
operator domain: 'Z list * 'Z list
operand: 'Y bTree * _
in expression:
inorder left @ (key :: nil) @ inorder right
【问题讨论】:
标签: binary-tree sml ml tree-traversal