今天就沒有去作每日一題了,開始刷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; } }