码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer-按之字形顺序打印二叉树

时间:2020-06-13 21:14:32      阅读:48      评论:0      收藏:0      [点我收藏+]

标签:practice   pop   剑指offer   分析   ++   turn   als   sub   view   

题目描述

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
 
题目链接:
 
 
分析:
因为只需记录打印顺序,所以只有顺序相反就好。
每行按从左到右的方式记录下一层节点。
 
 
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Iterator;
/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        ArrayList<ArrayList<Integer>> list = new ArrayList<>();
        if(null == pRoot){
            return list;
        }
        //两个队列,raw主队列
        LinkedList<TreeNode> raw = new LinkedList<TreeNode>();
        raw.add(pRoot);
        boolean flag = true;
        while(raw.size()!=0){
            //记录下当前行的大小
            int  size = raw.size();
            ArrayList<Integer> tmp = new ArrayList<Integer>();
            Iterator<TreeNode> iter = null;
            //flag=true 从左到右打印,false从右到左打印
            if(flag){
                iter = raw.iterator();
            }else{
                iter = raw.descendingIterator();
            }
            //下一次方向相反
            flag = !flag;
            while(iter.hasNext()){
                tmp.add(iter.next().val);
            }
            list.add(tmp);
            //将下一行节点按从左到右记录到raw队列中
            for(int i=0;i<size;i++){
                TreeNode cur = raw.pop();
                if(cur.left != null){
                    raw.add(cur.left);
                }
                if(cur.right != null){
                    raw.add(cur.right);
                }
            }
        }
        return list;
    }

}

 

剑指offer-按之字形顺序打印二叉树

标签:practice   pop   剑指offer   分析   ++   turn   als   sub   view   

原文地址:https://www.cnblogs.com/MoonBeautiful/p/13121665.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!