tree - SML 遍历 N 叉树
问题描述
我是 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)
谢谢你的帮助。
解决方案
由于traverse
是从树到树的函数,因此您可以遍历列表中的所有子树map
(并且您不需要特殊情况):
fun traverse (leaf x) = leaf x
| traverse (node xs) = node (map traverse xs)
推荐阅读
- windows - 无法访问 dockerized、不安全 Nifi 的 UI:发生意外错误
- kubernetes - 以 root 用户身份运行 Openshift pod
- c - cs50 拼字游戏
- html - 带引导程序的可触发辅助导航栏
- webpack - 在 dontet core razorpages 项目中捆绑 javascript 的最佳方式
- macos - 尝试在 Airflow 上运行 DockerOperator 时权限被拒绝
- java - Scrub 搜索栏在运行时出现问题
- api - 从授权代码流存储 OAuth 访问令牌的最佳方式
- node.js - NPM 发布 - 在 npm 安装期间将文件安装为根文件,而不是在 node_modules 内
- flutter - 在颤动中使用文本字段“取消选择”按钮