题解 | #合并二叉树#
合并二叉树
https://www.nowcoder.com/practice/7298353c24cc42e3bd5f0e0bd3d1d759
# class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param t1 TreeNode类 # @param t2 TreeNode类 # @return TreeNode类 # class Solution: def mergeTrees(self , t1: TreeNode, t2: TreeNode) -> TreeNode: # write code here if t1 is None: return t2 if t2 is None: return t1 head = TreeNode(t1.val+t2.val) head.left = self.mergeTrees(t1.left, t2.left) head.right = self.mergeTrees(t1.right, t2.right) return head
步骤:
- 判断t1与t2是否为空,若为空则用另一个代替。
- 依据前序遍历,优先访问根节点,将两个根点的值相加创建到新树中。
- 两棵树依次同步进入左子树和右子树。
复杂度:
- 时间复杂度:O(min(n,m)),m和n分别为两棵树的节点树,当一个树访问完时,直接连接上另一个树的节点,故只访问了小树的节点数。
- 空间复杂度:O(min(n,m)),递归栈深度只访问了小树的节点数。