按之字形順序打印二叉樹

題目:
請實現(xiàn)一個函數(shù)按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按照從左到右的順序打印,其他行以此類推。

思路:
層次遍歷通過一個層數(shù)來控制左-右或者右-左,右到左相當(dāng)于一個reverse所以可以根據(jù)棧的特性來完成這道題.

代碼:

/**
 * Created by Hammy on 2018/2/1.
 */
public class Print
{
    public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        ArrayList<ArrayList<Integer>> arrayLists = new ArrayList<>();
        if(pRoot == null)
            return arrayLists;
        //代表當(dāng)前層數(shù)
        int postNumber = 1 ;
        //放奇數(shù)層的棧
        Stack<TreeNode> stack1 = new Stack<>();
        //偶數(shù)層
        Stack<TreeNode> stack2 = new Stack<>();
        stack1.push(pRoot);

        while(!stack1.isEmpty() || !stack2.isEmpty()){
            //代表奇數(shù)
            if(postNumber % 2 != 0){
                ArrayList<Integer> arrayList = new ArrayList<>();
                while(!stack1.isEmpty()){
                    TreeNode node = stack1.pop();
                    if(node != null){
                        arrayList.add(node.val);
                        stack2.push(node.left);
                        stack2.push(node.right);
                    }
                }
                if(!arrayList.isEmpty()){
                    arrayLists.add(arrayList);
                    postNumber++;
                }
            }else{
                ArrayList<Integer> arrayList = new ArrayList<>();
                while(!stack2.isEmpty()){
                    TreeNode node = stack2.pop();
                    if(node != null){
                        arrayList.add(node.val);
                        stack1.push(node.right);
                        stack1.push(node.left);
                    }
                }
                if(!arrayList.isEmpty()){
                    arrayLists.add(arrayList);
                    postNumber++;
                }
            }
        }

        return arrayLists;
    }
    }


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 哎, 曬個風(fēng)景吧~ 今天的天空,白云朵朵。。。祝今天去INTERSPEECH 2016的小伙伴,一切順利! 時間限...
    AlwaysFrank閱讀 1,338評論 1 1
  • 題目描述請實現(xiàn)一個函數(shù)按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按...
    NoFacePeace閱讀 363評論 0 0
  • 我們一起看遙遠(yuǎn)南半球“奧運賽場上的求婚”,不禁鼻子一酸,感動著秦凱何姿驚艷了世界的愛情。 我深深嘆了口氣,略帶些抱...
    木槿點滴集閱讀 9,387評論 6 5
  • 不管是剛剛步入社會的職場新人,還是在職場摸爬滾打多年的“老人”,對于工作總會感覺到一絲疑惑,我們都希望我們的工作得...
    夢凝雪天閱讀 340評論 0 1
  • 上午壁球課被安排跟男生一組打球啦超開心呢下午和一平一起舌尖看快本
    dq920813閱讀 170評論 0 0

友情鏈接更多精彩內(nèi)容