You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haskell二叉树相等函数实现作业:补全equal函数代码

补全Haskell二叉树相等函数equal的实现

没问题,我来帮你补全这个检查二叉树是否完全相同的equal函数!咱们结合给定的函数框架,一步步填充每个模式匹配的逻辑:

完整实现代码

data Tree a = Leaf a | Node a (Tree a) (Tree a) | Null

equal :: Eq a => Tree a -> Tree a -> Bool
equal Null Null = True
equal (Leaf a) (Leaf b) = a == b
equal (Node a1 left1 right1) (Node a2 left2 right2) = a1 == a2 && equal left1 left2 && equal right1 right2
equal _ _ = False

逐行解释逻辑

  • equal Null Null = True:两个空树显然是完全相同的,直接返回True。
  • equal (Leaf a) (Leaf b) = a == b:当两个树都是叶子节点时,只要叶子中存储的值相等,这两棵树就相等。这里的模式匹配会精准匹配两个Leaf构造器的情况。
  • equal (Node a1 left1 right1) (Node a2 left2 right2) = a1 == a2 && equal left1 left2 && equal right1 right2:对于两个内部节点,需要同时满足三个条件才相等:
    1. 当前节点存储的值a1和a2相等;
    2. 左子树left1和left2完全相同(递归调用equal检查);
    3. 右子树right1和right2完全相同(同样递归调用equal检查)。
  • equal _ _ = False:剩下的所有不匹配情况(比如一个是Null另一个是Leaf,或者一个是Leaf另一个是Node),都说明两棵树结构或值不同,直接返回False。

这个实现覆盖了所有可能的二叉树组合情况,利用Haskell的模式匹配特性,逻辑清晰且符合递归数据结构的处理思路。

内容的提问来源于stack exchange,提问作者Residenttt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:45:06