LeetCode 题解:617. 合并二叉树,JavaScript,详细注释
原题链接:https://leetcode.cn/problems/merge-two-binary-trees/
这是一道关于二叉树的题目,要求我们合并两棵二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null
的节点将直接作为新二叉树的节点。
思路分析:
我们可以使用递归的方法来解决这个问题。具体步骤如下:
基本情况:如果
root1
或root2
中的任何一个为null
,则返回非空的那个节点。这是因为,如果其中一个节点为null
,那么合并的结果就是另一个节点。递归情况:如果
root1
和root2
都不为null
,我们可以创建一个新的节点,其值为root1.val + root2.val
。递归合并
root1
和root2
的左子树,并将结果设置为新节点的左子树。递归合并
root1
和root2
的右子树,并将结果设置为新节点的右子树。返回新节点。
代码实现:
复制代码
这种递归方法的时间复杂度是 O(min(m, n))
,其中 m
和 n
分别是两棵树的节点数。因为我们只访问了两棵树中都存在的节点。空间复杂度取决于递归的深度,最坏情况下,递归的深度等于较小的树的高度,所以空间复杂度是 O(min(height1, height2))
。
评论