617. 合并二叉树
问题617 合并二叉树 ★☆☆☆☆
https://leetcode-cn.com/problems/merge-two-binary-trees/
这个题目从递归的角度出发并不难想到解题思路,merge两个二叉树可以处理为:merge它们的左子树,merge它们的右子树,merge根节点,并把merge左右子树的结果作为新的左右子树。
如果不使用递归呢?不使用递归的话,对两颗二叉树做层序遍历,然后一层一层的merge,处理起来也不复杂,需要注意对于空节点,需要按null入队列,这样才能确认需要merge的节点之间的对应位置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
if (root1 == null && root2 == null) {
return null;
} else if (root1 != null && root2 == null) {
return root1;
} else if (root1 == null && root2 != null) {
return root2;
} else {
TreeNode left = mergeTrees(root1.left, root2.left);
TreeNode right = mergeTrees(root1.right, root2.right);
root1.val = root1.val + root2.val;
root1.left = left;
root1.right = right;
return root1;
}
}
本文由作者按照 CC BY 4.0 进行授权