首页 > 代码库 > LeetCode #617 Merge Two Binary Trees
LeetCode #617 Merge Two Binary Trees
Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not.
You need to merge them into a new binary tree. The merge rule is that if two nodes overlap, then sum node values up as the new value of the merged node. Otherwise, the NOT null node will be used as the node of new tree.
Example 1: Input: Tree 1 Tree 2 1 2 / \ / \ 3 2 1 3 / \ \ 5 4 7 Output: Merged tree: 3 / 4 5 / \ \ 5 4 7 Note: The merging process must start from the root nodes of both trees.
题意:以数组的方式给出两棵二叉树,将两棵树以根为底将两棵树合并起来,当且仅当两棵树同个位置的节点都有值时进行相加作为新节点值,不然就将其中一棵不为空的节点值作为新节点。
解法:通过中序遍历两棵树,依次返回不为空的新节点更新第一棵树节点,当遍历过程中发现两棵树中其中一棵为空时直接将另外一棵接上即可,若两棵都不为空则按照规则更新第一棵树节点,并递归中序遍历继续更新两棵树。
参考代码:
1 class Solution: 2 def mergeTrees(self, t1, t2): 3 """ 4 :type t1: TreeNode 5 :type t2: TreeNode 6 :rtype: TreeNode 7 """ 8 if t1 and t2: 9 t1.val = t1.val+t2.val 10 t1.left = self.mergeTrees(t1.left, t2.left) 11 t1.right = self.mergeTrees(t1.right, t2.right) 12 return t1 13 elif t1: 14 return t1 15 elif t2: 16 return t2
LeetCode #617 Merge Two Binary Trees
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。