1. 程式人生 > 程式設計 >Python3 合併二叉樹的實現

Python3 合併二叉樹的實現

題目要求:給定兩個二叉樹,想象當你將它們中的一個覆蓋到另一個上時,兩個二叉樹的一些節點便會重疊。你需要將他們合併為一個新的二叉樹。合併的規則是如果兩個節點重疊,那麼將他們的值相加作為節點合併後的新值,否則不為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 = None

class 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

時間空間消耗:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。