class TreeNode:<br> def __init__(<a href="https://www.gaodaima.com/tag/self" title="查看更多关于self的文章" target="_blank">self</a>, x):<br> self.val = x<br> self.left = None<br> self.right = None<br># 这道也是简单题,也是用深搜的办法来做的。<br># 遍历每一个节点,然后如果这个节点两个树都有的话就加到第一个树上边。<br># 如果第二个树有而第一个树没有的话,就将第一个树的节点指向个树。<br>class Solution:<br> def mergeTrees(self, t1: TreeNode, t2: TreeNode) -> TreeNode:<br> # 判断两个树是否为空<br> if not t1 and t2:<br> return t2<br> elif not t2 and t1:<br> return t1<br> elif not t1 and not t2:<br> return t1<br> else:<br> # 注意这里如果两个树都不为空的时候,注意是否只有根节点。<br> t1.val += t2.val<br> if not t1.left and not t1.right and not t2.left and not t2.right:<br> return t1<br> else:<br> self.dfs(t1,t2)<br> return t1<br> def dfs(self,root1,root2):<br> # 两个树的节点的左儿子都不为空,就加到第一个树的节点上边。<br> if root1.left and root2.left :<br> root1.left.val += root2.left.val<br> # 然后继续进行遍历<br> self.dfs(root1.left,root2.left)<br> # 如果两个树的左儿子节点都为空,或者第一个树的左儿子节点不为空,<br> # 不用进行改变。<br> # 如果第二个树的左儿子节点不为空,第一个树的左儿子节点为空,<br> # 那么就将第一个树的指针指向第二个树的左儿子节点。<br> elif not root1.left and root2.left:<br> root1.left = root2.left<br> # 右子树和左子树一样的。<br><br> if root1.right and root2.right :<br> root1.right.val += root2.right.val<br> self.dfs(root1.right,root2.right)<br> elif not root1.right and root2.right:<br> root1.right = root2.right<br><br>
www#gaodaima.com来源gaodaimacom搞#^代%!码&网搞代码