我给了二叉树的深度函数,如下所示:
fun depth Empty = 0
| depth(Node(t_1, _ t_2)) = max(depth t_1, depth t_2) + 1;
假设我想要修改此深度函数,使得单个节点的深度为0(实际上,单个节点的深度为1)。我该怎么做呢?
我在想:
fun depth Empty = 0
| depth(Node(Empty, _, Empty)) = 0
| depth(Node(t_1, _, t_2)) = max(depth t_1, depth t_2) + 1;
这看起来不错吗?
谢谢,
bclayman
答案 0 :(得分:1)
这很接近,但并不完全正确。 depth(Node(Node(Empty,1,Empty),2,Empty)
将在左子树上递归,该子树是单个节点,因此它将返回0
。然后它将在右边递归,这是空的,返回0.然后你将取最大0和0,返回1,这可能不是你想要的。相反,您必须匹配空案例和单例大小写,并且对于默认情况,您将需要调用原始版本,对于单个节点返回1。