日期 | 是否一次通过 | comment |
---|---|---|
2018-12-10 22:08 | 递归一次;遍历两次 | 印象不深,遍历仍旧在机械记忆 |
2018-12-11 21:09 | 一次通过 | 有点晕,直接机械记忆 |
2018-12-12 20:40 | 一次通过 | 机械记忆 |
2018-12-21 17:18 | 一次通过,但印象不深 | 摸索着写完的,脑子里感觉和其他题有点类似 |

(来源:https://leetcode.com/problems/merge-two-binary-trees/)
递归
class Solution {
public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
if(t1 == null) {
return t2;
}
if(t2 == null) {
return t1;
}
t1.val += t2.val;
t1.left = mergeTrees(t1.left, t2.left);
t1.right = mergeTrees(t1.right, t2.right);
return t1;
}
}
遍历
class Solution {
public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
if(t1 == null) {
return t2;
}
Queue<TreeNode[]> nodeQ = new LinkedList<>();
nodeQ.offer(new TreeNode[]{t1, t2});
while(!nodeQ.isEmpty()) {
TreeNode[] nodeArray = nodeQ.poll();
if(nodeArray[0] == null || nodeArray[1] == null) {
continue;
}
nodeArray[0].val += nodeArray[1].val;
if(nodeArray[0].left == null) {
nodeArray[0].left = nodeArray[1].left;
} else {
nodeQ.offer(new TreeNode[]{nodeArray[0].left, nodeArray[1].left});
}
if(nodeArray[0].right == null) {
nodeArray[0].right = nodeArray[1].right;
} else {
nodeQ.offer(new TreeNode[]{nodeArray[0].right, nodeArray[1].right});
}
}
return t1;
}
}
网友评论