题目

leetcode:617

代码与解析

这道题可以用递归来做

前中后序遍历理论都可以

这里借用了一下node1的节点,就不用新创建节点了。

这里以前序遍历为例:

  • 确定参数与返回值
    需要传入两个二叉树的头结点指针, 返回头结点

  • 确定终止条件
    如果node1为nil合并之后就是node2
    如果node2为nil合并之后就是node1

if node1==nil{
    return node2
}
if node2==nil{
    return node1
}
  • 确定单层逻辑
      //node1.Val = node1.Val + node2.Val
        node1.Val += node2.Val;
node1.Left= helper(node1.Left, node2.Left)
node1.Right = helper(node1.Right, node2.Right)

整体代码

func mergeTrees(root1 *TreeNode, root2 *TreeNode) *TreeNode {
    var helper func (root1 *TreeNode, root2 *TreeNode)*TreeNode
    helper = func (node1 *TreeNode, node2 *TreeNode)*TreeNode{
        if node1==nil{
            return node2
        }
        if node2==nil{
            return node1
        }

        node1.Val = node1.Val + node2.Val

        node1.Left= helper(node1.Left, node2.Left)
        node1.Right = helper(node1.Right, node2.Right)
        return node1
    }
    return helper(root1, root2)
}
分类: 算法

站点统计

  • 文章总数:315 篇
  • 分类总数:20 个
  • 标签总数:193 个
  • 运行天数:1161 天
  • 访问总数:47770 人次

浙公网安备33011302000604

辽ICP备20003309号