python mergeTrees合併二叉樹

2021-10-24 10:37:02 字數 2402 閱讀 6901

分析:1、初始化二叉樹

2、如果t1不存在,返回t2;如果t1存在,t1的值=t1的值+t2的值;內部遞迴迴圈t1左子樹和t1右子樹,返回t1

3、賦值t1,t2,得出和**:#definition for a binary tree node,初始化二叉樹

class treenode(object):

def __init__(self, x):

self.val = x

self.left = none

self.right = none#前序遍歷(先遍歷根節點,再遍歷左子樹,再遍歷右子樹)

def preorder(root):

if root:

print(root.val)

preorder(root.left)

preorder(root.right)

#中序遍歷(先遍歷左子樹,再遍歷根節點,再遍歷右子樹)

def inorder(root):

if root:

inorder(root.left)

print(root.val)

inorder(root.right)

#後序遍歷(先遍歷左子樹,再遍歷右子樹,再遍歷根節點)

def postorder(root):

if root:

postorder(root.left)

postorder(root.right)

print(root.val)class solution(object):

def mergetrees(self, t1:treenode, t2:treenode):

""":type t1: treenode

:type t2: treenode

:rtype: treenode

"""if not t1 and t2:

return t2

elif t1 and t2:

t1.val = t2.val+t1.val

t1.left = self.mergetrees(t1.left,t2.left)

t1.right = self.mergetrees(t1.right,t2.right)

return t1#賦值t1tree1 = treenode(1)

tree1.left = treenode(3)

tree1.right = treenode(2)

tree1.left.left = treenode(5)

preorder(tree1)#賦值t2tree2 = treenode(2)

tree2.left = treenode(1)

tree2.right = treenode(3)

tree2.left.right = treenode(4)

tree2.right.right=treenode(7)

preorder(tree2)例項執行

s = solution()

res = s.mergetrees(tree1,tree2)

print(res)

preorder(res)執行結果:135

2214

37<__main__.treenode object at 0x000001745567c128>34

5457

process finished with exit code 0題目要求'''

給定兩個二叉樹,想象當你將它們中的乙個覆蓋到另乙個上時,兩個二叉樹的一些節點便會重疊。

你需要將他們合併為乙個新的二叉樹。合併的規則是如果兩個節點重疊,那麼將他們的值相加作為節點合併後的新值,否則不為 null 的節點將直接作為新二叉樹的節點。

示例 1:

輸入: tree 1 tree 2

1 2

/ \ / \

3 2 1 3

/ \ \

5 4 7

輸出:合併後的樹:

3/ \

4 5

/ \ \

5 4 7

注意: 合併必須從兩個樹的根節點開始。

'''

617 合併二叉樹

給定兩個二叉樹,想象當你將它們中的乙個覆蓋到另乙個上時,兩個二叉樹的一些節點便會重疊。你需要將他們合併為乙個新的二叉樹。合併的規則是如果兩個節點重疊,那麼將他們的值相加作為節點合併後的新值,否則不為 null 的節點將直接作為新二叉樹的節點。示例 1 輸入 tree 1 tree 2 1 2 3 2...

617 合併二叉樹

題目描述 給定兩個二叉樹,想象當你將它們中的乙個覆蓋到另乙個上時,兩個二叉樹的一些節點便會重疊。你需要將他們合併為乙個新的二叉樹。合併的規則是如果兩個節點重疊,那麼將他們的值相加作為節點合併後的新值,否則不為 null 的節點將直接作為新二叉樹的節點。示例 1 輸入 輸出 合併後的樹 注意 合併必須...

LeetCode合併二叉樹

給定兩個二叉樹,想象當你將它們中的乙個覆蓋到另乙個上時,兩個二叉樹的一些節點便會重疊。你需要將他們合併為乙個新的二叉樹。合併的規則是如果兩個節點重疊,那麼將他們的值相加作為節點合併後的新值,否則不為 null 的節點將直接作為新二叉樹的節點。示例 1 輸入 原始二叉樹如下圖 輸出 合併後的二叉樹如下...