給了兩個根節點,那不麻煩了。直接把第二棵樹加到第一棵上面返回就好了。建立乙個遞迴函式,遞迴合併就好了。
若第二棵子樹為空,那加出來的結果和第一棵樹相同,故直接返回即可。
若第二棵不為空,但第一棵為空,加出來的結果和第二棵相同,故直接將該點指向第二棵就行了。
兩棵都不為空,則根節點相加,遞迴他們的孩子即可。
ac**:
1void create(treenode *&root, treenode *&an)210
else
1114 create(root->left, an->left);
15 create(root->right, an->right);16}
17 treenode *mergetrees(treenode *root1, treenode *root2)
18
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上,然後遞迴合併兩個根節點的左子樹和右子樹。合併完後可能會出現有...