【发布时间】:2023-09-29 00:06:01
【问题描述】:
我正在尝试在 SML 中的 BST 中查找节点的父节点和祖父节点。
我已尝试修改此功能:
fun search(tree : bst, compare, (data) =
let fun s(Leaf) = NONE
| s(Node{data=nodedata,left=left,right=right}) =
(case compare(data,nodedata) of
LESS => s(left)
| GREATER => s(right)
| EQUAL => SOME (Node{data=nodedata,left=left,right=right}))
in
s(tree)
end
通过改变输入、比较和输出的格式:
fun search(tree : bst, compare, (data) =
let fun s(Leaf) = NONE
|s(Node{data=nodedata,left=Node{data=nodedata1,left=left1,right=right1},right=right}) =
(case compare(data,nodedata) of
LESS => s(left)
| GREATER => s(right)
| EQUAL => SOME nodedata)
显然它不起作用,我想有一种更简单的方法可以做到这一点。
我添加了一个新变量以保存我正在检查的每个节点的当前父节点并且它可以工作,但是(对我而言)很难找到一种方法来同时保留我检查的节点的祖父节点。
有什么想法吗?提前致谢。
【问题讨论】:
-
你已经尝试了什么?
-
我用我尝试过的内容编辑了我的帖子
标签: binary-search-tree sml smlnj