Tree-E-102. Binary Tree Level Order Traversal I and II

Tree-E-102. Binary Tree Level Order Traversal

時間 20180301


1.解法1

??本題的實質(zhì)是廣度優(yōu)先搜索BFS释涛,而隊列可以輕松的以迭代形式實現(xiàn)它,不過不同于BFS的是衬潦,層序便利需要在隊列中記住每一層的分割點教届,而BFS不關(guān)心層數(shù)只要遍歷到指定元素就行了稀轨。為了記住這個分割點撮慨,我們在進(jìn)入下一層之前先記下這一層的元素個數(shù)N(N其實就是當(dāng)前queue的大小)毛萌,然后只遍歷N個節(jié)點(展開下一層節(jié)點的同時queue中會新加入很多下下一層的節(jié)點)席舍。遍歷完N個節(jié)點后記錄新的層數(shù)布轿,在進(jìn)入下一層。對于II来颤,反悔的層是逆序的汰扭,我們只要在結(jié)果中,每次把下面新一層加到當(dāng)前這一層的前面就可以了福铅。

class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        //BFS的廣度優(yōu)先算法
        //這里使用到隊列先進(jìn)先出“先插入”
        //錯誤的寫法:List is abstract; cannot be instantiated
        //List<List<Integer>> res = new List<List<Integer>>(); 
        //ArrayList與LinkedList的區(qū)別萝毛??滑黔?
        List<List<Integer>> res = new LinkedList<List<Integer>>();
        //錯誤的寫法new Queue<TreeNode>();
        // Queue<TreeNode> q = new Queue<TreeNode>();
        Queue<TreeNode> q = new LinkedList<TreeNode>();
        
        if(root != null)q.add(root);
        
        while(!q.isEmpty()){
            //每個List中都是一個List
            List<Integer> level = new LinkedList<Integer>();
            //用來保存當(dāng)前層中的TreeNode的個數(shù)
            int size = q.size();
            for(int i = 0; i < size; i++){
                root = q.poll();
                level.add(root.val);
                //錯誤沒有異常處理條件if(root.left!=null)
                // q.offer(root.left);
                // q.offer(root.right);
                //queue有offer方法笆包?
                if(root.left != null){
                    q.add(root.left);
                }
                if(root.right != null){
                    q.add(root.right);
                }
            }
            res.add(level);
        }
        return res;
    }
}
class Solution {
   public List<List<Integer>> levelOrderBottom(TreeNode root) {
        //區(qū)別list=null和List<Integer> list = new LinkedList<Integer>();list為空的區(qū)別。略荡?庵佣??汛兜?
       List<List<Integer>> res = new LinkedList<List<Integer>>();
       //List<Integer> level = new LinkedList<Integer>();
       
       Queue<TreeNode> q = new LinkedList<TreeNode>();
       if(root!=null){
          q.add(root); 
       }
       
       while(!q.isEmpty()){
           //level = null;
           List<Integer> level = new LinkedList<Integer>();
           int size = q.size();
           // while(size>=0){
           //     TreeNode head =  q.poll();
           //     level.add(head.val);
           //     if(head.left != null) q.add(head.left);
           //     if(head.right != null) q.add(head.right);
           //     size--;
           // }
           for(int i = 0;i<size;i++){
               TreeNode head = q.poll();
               level.add(head.val);
               if(head.left != null)q.add(head.left);
               if(head.right != null) q.add(head.right);
           }
           res.add(0,level);
       }
       
       
       
       return res;
   }
   
   
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末巴粪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肛根,老刑警劉巖辫塌,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異派哲,居然都是意外死亡臼氨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進(jìn)店門芭届,熙熙樓的掌柜王于貴愁眉苦臉地迎上來储矩,“玉大人,你說我怎么就攤上這事褂乍∫叮” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵树叽,是天一觀的道長。 經(jīng)常有香客問我谦絮,道長题诵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任层皱,我火速辦了婚禮性锭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘叫胖。我一直安慰自己草冈,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布瓮增。 她就那樣靜靜地躺著怎棱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪绷跑。 梳的紋絲不亂的頭發(fā)上拳恋,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天,我揣著相機與錄音砸捏,去河邊找鬼谬运。 笑死,一個胖子當(dāng)著我的面吹牛垦藏,可吹牛的內(nèi)容都是我干的梆暖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼掂骏,長吁一口氣:“原來是場噩夢啊……” “哼轰驳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤滑废,失蹤者是張志新(化名)和其女友劉穎蝗肪,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蠕趁,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡薛闪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了俺陋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豁延。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖腊状,靈堂內(nèi)的尸體忽然破棺而出诱咏,到底是詐尸還是另有隱情,我是刑警寧澤缴挖,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布袋狞,位于F島的核電站,受9級特大地震影響映屋,放射性物質(zhì)發(fā)生泄漏苟鸯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一棚点、第九天 我趴在偏房一處隱蔽的房頂上張望早处。 院中可真熱鬧,春花似錦瘫析、人聲如沸砌梆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咸包。三九已至,卻和暖如春甘有,著一層夾襖步出監(jiān)牢的瞬間诉儒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工亏掀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留忱反,地道東北人。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓滤愕,卻偏偏與公主長得像温算,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子间影,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容