今天就没有去作每日一题了,开始刷hot100。直接从简单的开始作,慢慢积累经验和找回手感。java
今天的题目是:合并二叉树。node
个人想法就是题目的想法,有个小细节就是,合并到第一棵树上,若是有的分支没有数,那就把这个地方用0代替。数据结构
这样的话,位置对应并且加起来也不会错。blog
可是为何!!!又是时间超了,我枯了。待解决待解决it
import java.util.LinkedList ; class Solution { public TreeNode mergeTrees(TreeNode t1, TreeNode t2) { Queue<TreeNode> q =new LinkedList<>(); TreeNode tr1=null;//存储节点值的 TreeNode tr2=null; TreeNode tr0 = new TreeNode(0,null,null); //特殊状况 if(t1==null) { return t2; } //根节点入队 q.add(t1); q.add(t2); //层次遍历 while(!q.isEmpty()) { //根节点出队,相加 tr1=q.poll(); tr2=q.poll(); tr1.val+=tr2.val; //左右节点入队 //若是节点为null,就入队0,而后相加不影响,且位置对应。 //tr1 if(tr1.left==null) q.offer(tr0); else q.offer(tr1.left); if(tr1.right==null) q.offer(tr0); else q.offer(tr1.right); //tr2 if(tr2.left==null) q.offer(tr0); else q.offer(tr2.left); if(tr2.right==null) q.offer(tr0); else q.offer(tr2.right); } return tr1; } }
二叉树的数据结构是:io
Definition for a binary tree node. public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }