給定兩個二叉樹,想象當你將它們中的乙個覆蓋到另乙個上時,兩個二叉樹的一些節點便會重疊。
你需要將他們合併為乙個新的二叉樹。合併的規則是如果兩個節點重疊,那麼將他們的值相加作為節點合併後的新值,否則不為 null 的節點將直接作為新二叉樹的節點。
可以使用深度優先搜尋合併兩個二叉樹。從根節點開始同時遍歷兩個二叉樹,並將對應的節點進行合併。
兩個二叉樹的對應節點可能存在以下三種情況,對於每種情況使用不同的合併方式。
如果兩個二叉樹的對應節點都為空,則合併後的二叉樹的對應節點也為空;
如果兩個二叉樹的對應節點只有乙個為空,則合併後的二叉樹的對應節點為其中的非空節點;
如果兩個二叉樹的對應節點都不為空,則合併後的二叉樹的對應節點的值為兩個二叉樹的對應節點的值之和,此時需要顯性合併兩個節點。
對乙個節點進行合併之後,還要對該節點的左右子樹分別進行合併。這是乙個遞迴的過程。
class
solution
:def
mergetrees
(self, t1: treenode, t2: treenode)
-> treenode:
ifnot t1:
return t2
ifnot t2:
return t1
merged = treenode(t1.val + t2.val)
merged.left = self.mergetrees(t1.left, t2.left)
merged.right = self.mergetrees(t1.right, t2.right)
return merged
617 合併二叉樹(leetcode)
給定兩個二叉樹,想象當你將它們中的乙個覆蓋到另乙個上時,兩個二叉樹的一些節點便會重疊。你需要將他們合併為乙個新的二叉樹。合併的規則是如果兩個節點重疊,那麼將他們的值相加作為節點合併後的新值,否則不為 null 的節點將直接作為新二叉樹的節點。題目鏈結 public class leetcode617...
leetcode合併二叉樹 617
給定兩個二叉樹,想象當你將它們中的乙個覆蓋到另乙個上時,兩個二叉樹的一些節點便會重疊。你需要將他們合併為乙個新的二叉樹。合併的規則是如果兩個節點重疊,那麼將他們的值相加作為節點合併後的新值,否則不為 null 的節點將直接作為新二叉樹的節點。address definition for a bina...
LeetCode617 合併二叉樹
給定兩個二叉樹,想象當你將它們中的乙個覆蓋到另乙個上時,兩個二叉樹的一些節點便會重疊。你需要將他們合併為乙個新的二叉樹。合併的規則是如果兩個節點重疊,那麼將他們的值相加作為節點合併後的新值,否則不為 null 的節點將直接作為新二叉樹的節點。示例 1 輸入 tree 1 tree 2 1 2 3 2...