leetcode617 合併二叉樹

2021-10-09 17:19:57 字數 966 閱讀 7635

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

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

思路一:dfs進行合併,每次迭代過程就是 :合併節點+合併左子樹+合併右子樹。

思路二:bfs進行合併,維護三個佇列進行即可。

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

if(t2==nullptr)

// dfs

// auto merge = new treenode(t1->val+t2->val);

// merge->left=mergetrees(t1->left,t2->left);

// merge->right=mergetrees(t1->right,t2->right);

// return merge;

//bfs

queueq1;

queueq2;

queueq;

auto merge = new treenode(t1->val + t2->val);

q1.push(t1);

q2.push(t2);

q.push(merge);

while(!q1.empty() && !q2.empty())

else if(left2 ==nullptr)

else

}if(right1!=nullptr || right2!=nullptr)

else if(right2 ==nullptr)

else}}

return merge;

}};

LeetCode617 合併二叉樹

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

LeetCode 617 合併二叉樹

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

leetcode 617 合併二叉樹

這個題目不難,能夠想到使用遞迴的方法去解決,最好的方法不是新建一棵樹,而是把所有的改變都放在一棵樹上。此處我將合併後的改變都放在了樹t1上了。兩棵樹同時開始並按照相同的方式遍歷,當兩個根節點都不為null時,就將兩個根節點的值加到樹t1上,然後遞迴合併兩個根節點的左子樹和右子樹。合併完後可能會出現有...