vvv520qsn 2021-10-28 18:51 采纳率: 50%
浏览 101
已结题

请问cs61a spring2021lab05选择题add_trees有什么好思路?

img


求思路啊

  • 写回答

1条回答 默认 最新

  • bobhuang 2021-10-28 19:19
    关注

    如果两个树A和B做add_tree操作,得到C,则基本的规则可以解释为:
    1.A和B都有的节点,则对应节点上的数值相加,为C的对应节点;
    2.A有而B没有的节点,直接复制到C的对应节点上,反之亦然。

    思路:
    用递归实现,每次合并一层,即当前节点,并在当前层的A、B两棵树都不为空时,逐个合并子节点。
    函数形式代码:

    
    def add_tree(A, B):
      if (A is None) and (B is not None):
        return B
      else if (A is not None) and (B is None):
        return A
      # 都不为空, 逐个合并
      val_a, leaves_a = get_val_leaves(A)
      val_b, leaves_b = get_val_leaves(B)
      val_c = val_a + val_b
      leaves_c = merge_leaves(leaves_a, leaves_b)
      if leaves_c is None:
        return val_c
      else:
       return (val_c, leaves_c)
    

    子函数 get_val_leaves,和 merge_leaves,根据语义类推。merge_leaves和add_tree是差不多的逻辑。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月12日
  • 已采纳回答 11月4日
  • 创建了问题 10月28日

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c