Tree SML遍历N元树
我是SML的新手 经过几次搜索,我仍然找不到任何与遍历n元树相关的资源。许多示例只是遍历一个简单的二叉树 说吧,我有Tree SML遍历N元树,tree,sml,Tree,Sml,我是SML的新手 经过几次搜索,我仍然找不到任何与遍历n元树相关的资源。许多示例只是遍历一个简单的二叉树 说吧,我有 datatype 'a tree = leaf of 'a list | node of 'a tree list 我想遍历这个n元树并返回完全相同的树(val traverse=fn:'a tree->'a tree) 我该怎么办 这是我的密码: fun traverse (leaf x) = (leaf x) | traverse (node []) = node []
datatype 'a tree = leaf of 'a list | node of 'a tree list
我想遍历这个n元树并返回完全相同的树(val traverse=fn:'a tree->'a tree
)
我该怎么办
这是我的密码:
fun traverse (leaf x) = (leaf x)
| traverse (node []) = node []
| traverse (node [x]) = node [x]
我正在努力添加最后一个模式,即(这是错误的)
感谢您的帮助。由于
遍历
是一个从树到树的函数,您可以使用映射
遍历列表中的所有子树(并且不需要特殊情况):
| traverse (node (x::xs)) = traverse (node x) :: traverse (xs)
fun traverse (leaf x) = leaf x
| traverse (node xs) = node (map traverse xs)