目錄
題目:
示例:
分析:
代碼:
題目:
示例:
分析:
給我們合并兩棵二叉樹,合并的方式就是把對應位置的節點的值相加,最后把合并后的二叉樹的根節點返回出去。
這類二叉樹需要遍歷的題目,我們一般都是要遞歸的,無論是前中后序哪一種遍歷方式,都是要遞歸的。
本題我們直接在調用函數里遞歸就可以了。
我們直接做個判斷,如果某個節點為空指針節點,那么就返回另一個節點。
接著沒有任何節點為空指針節點,那么我們就把兩個節點的值加起來,賦給節點1。
接著進入遞歸,節點1的左子樹等于兩個節點的左子樹進入新的遞歸所返回的節點。
右子樹也等于兩個節點的右子樹進入新的遞歸所返回的節點。
因為我們是把值相加到節點1的,所以我們最后返回節點1即可。
代碼:
class Solution {
public:TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {if(root1==nullptr) return root2; //如果節點1為空返回節點2if(root2==nullptr) return root1; //如果節點2為空返回節點1root1->val+=root2->val; //直接修改節點1的值root1->left=mergeTrees(root1->left,root2->left); //遞歸修改節點1的左子樹root1->right=mergeTrees(root1->right,root2->right); //遞歸修改節點1的右子樹return root1; //直接返回節點1}
};