首页 > 编程 > Python > 正文

Python3 合并二叉树的实现

2019-11-25 11:38:27
字体:
来源:转载
供稿:网友

题目要求:给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。

解决思想:遇到二叉树,首先想到的是递归实现。为了降低空间消耗,两个二叉树合并为一个时,不再新建树。初始给定两个树的当前结点(根结点)t1、t2,若t1和t2节点均不为空,t1节点值更新为t1+t2的值,递归遍历当前节点的左子树和右子树;如果任意其中一个节点为空,且不全为空,返回非空节点;如果两节点均为空,返回None。

直接上代码( ̄ ̄):

# Definition for a binary tree node.# class TreeNode:#   def __init__(self, x):#     self.val = x#     self.left = None#     self.right = Noneclass Solution:  def mergeTrees(self, t1: TreeNode, t2: TreeNode) -> TreeNode:    if t1!=None and t2!=None:      t1.val+=t2.val      t1.left = self.mergeTrees(t1.left,t2.left)      t1.right = self.mergeTrees(t1.right,t2.right)    elif t1==None and t2!=None:      return t2    elif t1!=None and t2==None:      return t1    else:      return None    return t1

时间空间消耗:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表