【问题标题】:SML Traverse an N-ary treeSML 遍历 N 叉树
【发布时间】:2021-03-03 13:59:25
【问题描述】:

我是 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 []
  | traverse (node [x]) = node [x]

我正在努力添加最后一个模式,即(这是错误的)

  | traverse (node (x::xs)) = traverse (node x) :: traverse (xs)

感谢您的帮助。

【问题讨论】:

    标签: tree sml


    【解决方案1】:

    由于traverse是一个从树到树的函数,你可以用map遍历列表中的所有子树(并且你不需要特殊情况):

    fun traverse (leaf x) = leaf x
      | traverse (node xs) = node (map traverse xs)
    

    【讨论】:

      猜你喜欢
      • 2021-03-04
      • 1970-01-01
      • 2020-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-01
      • 2015-05-09
      • 1970-01-01
      相关资源
      最近更新 更多