题解 | #按之字形顺序打印二叉树#

按之字形顺序打印二叉树

https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0

java 使用队列解决之字形顺序打印二叉树
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Queue;

public class TwentySevenPrint {
    public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
        //存储输出
        ArrayList<ArrayList<Integer>> res = new ArrayList<>();
        //如果为空
        if(pRoot == null){
            return res;
        }

        //创建队列
        Queue<TreeNode> q = new ArrayDeque<>();
        q.add(pRoot);

        //层数,决定从左到右还是从右到左
        int level = 0;

        while (!q.isEmpty()){
            //记录二叉树的某一行
            ArrayList<Integer> row = new ArrayList<>();
            //序列长度
            int n = q.size();
            //遍历序列
            for (int i = 0; i < n; i++) {
                TreeNode cur = q.poll();
                row.add(cur.val);
                //如果存在左右子树,则加入队列
                if(cur.left!= null){
                    q.add(cur.left);
                }
                if(cur.right != null){
                    q.add(cur.right);
                }

            }
            //层数加一
            level++;
            //之字形
            if(level % 2 != 0){
                res.add(row);
            }else {
                Collections.reverse(row);//反转内容
                res.add(row);
            }
        }

        return res;

    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-27 10:46
点赞 评论 收藏
分享
牛客101244697号:这个衣服和发型不去投偶像练习生?
点赞 评论 收藏
分享
专心打鱼:互联网搬运工,贴子都要偷
点赞 评论 收藏
分享
蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
评论
点赞
1
分享
牛客网
牛客企业服务