Python3 合併二叉樹的實現
阿新 • • 發佈:2020-01-09
題目要求:給定兩個二叉樹,想象當你將它們中的一個覆蓋到另一個上時,兩個二叉樹的一些節點便會重疊。你需要將他們合併為一個新的二叉樹。合併的規則是如果兩個節點重疊,那麼將他們的值相加作為節點合併後的新值,否則不為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
時間空間消耗:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。