一、題目大意
給你兩棵二叉樹: root1 和 root2 ,
想象一下,當你將其中一棵覆寫到另一棵之上時,兩棵樹上的一些節點將會重疊(而另一些不會),你需要將這兩棵樹合并成一棵新二叉樹,合并的規則是:如果兩個節點重疊,那么將這兩個節點的值相加作為合并后節點的新值;否則,不為 null 的節點將直接作為新二叉樹的節點,
回傳合并后的二叉樹,
注意: 合并程序必須從兩個樹的根節點開始,
示例 1:

輸入:root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]
輸出:[3,4,5,5,4,null,7]
示例 2:
輸入:root1 = [1], root2 = [1,2]
輸出:[2,2]
提示:
兩棵樹中的節點數目在范圍 [0, 2000] 內
-104 <= Node.val <= 104
來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/merge-two-binary-trees
著作權歸領扣網路所有,商業轉載請聯系官方授權,非商業轉載請注明出處,
二、解題思路
直接用遞回呼叫給定函式,先判斷如果root1為慷訓傳root2,如果root2為慷訓傳root1,都存在的情況下建立新節點node,然后對root1和root2的左子節點呼叫遞回并賦給node的左子節點,再對root1和root2的右子節點呼叫遞回并賦給node的右子節點,回傳node即可,
三、解題方法
3.1 Java實作
class Solution {
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
if (root1 == null) {
return root2;
}
if (root2 == null) {
return root1;
}
TreeNode node = new TreeNode(root1.val + root2.val);
node.left = mergeTrees(root1.left, root2.left);
node.right = mergeTrees(root1.right, root2.right);
return node;
}
}
四、總結小記
- 2022/9/27 愿每個人都能:出走半生,歸來仍是少年
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/509684.html
標籤:其他
