题目
代码与解析
这道题可以用递归来做
前中后序遍历理论都可以
这里借用了一下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)
}