「这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战」
617. 合并二叉树
题目描述
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。
你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。
示例 1:
1 | makefile复制代码输入: |
注意: 合并必须从两个树的根节点开始。
递归法
前序遍历 – 递归法
- 1、递归函数的参数与返回值
- 参数:两个树的节点
- 返回值:新树的节点
- 2、递归终止条件
- 两个树的节点一个为空一个不为空,返回不为空的节点
- 两个树的节点都为空,返回空
- 两个树的节点都不为空,返回新节点
- 3、单层遍历的逻辑
- 根节点
- 左节点
- 右节点
代码
合并后的树使用新的空间
1 | c++复制代码// 递归法 |
原地合并
1 | c++复制代码class Solution{ |
迭代法
思路同递归
代码
1 | c++复制代码class Solution { |
本文转载自: 掘金