栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

NC14 按之字形顺序打印二叉树

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

NC14 按之字形顺序打印二叉树

题目描述

给定一颗二叉树,按照之字形打印出二叉树,即偶数层(从0数)从左到右,奇数层从右到左。
示例:
输入:{1,2,3,#,#,4,5}
输出:[[1],[3,2],[4,5]]

原题链接:按之字形顺序打印二叉树

思路

通俗的广度遍历bfs+奇偶判断使用队列 解题

广度遍历解题和递归的深度遍历一样有模版:

创建队列,添加根结点到队列循环,出循环的条件是队列为空的时候遍历,也就是每次循环要做的事情,拿到队列的长度,也就是这次遍历的那一层的节点个数,让每一个节点出队,打印这个节点,添加每一个节点的子节点到队列中

硬性基础:

java队列Queue,实现类是linkedList进队add()和offer(),区别:出错的时候add方法抛异常,offer返回false出队remove()和poll(),区别:remove出错抛异常,poll返回null枚举队首element()和peek(),区别:element抛异常,peek返回nullsize()返回队列大小Collections.reverse()反转list

    public ArrayList > Print(TreeNode pRoot) {
        ArrayList> res=new ArrayList<>();
        ArrayList list=new ArrayList<>();
//         返回结果的容器
        if(pRoot==null) return res;
        Queue q=new linkedList<>();
//         创建队列
        q.offer(pRoot);
//         加入根结点
        int j=0;
//         记录当前层数是奇数还是偶数,0为偶数层
        while(!q.isEmpty()){
//             循环,出循环条件是队列为空,也就是遍历结束了
            list.clear();
//             清空记录一层节点的容器
            int size=q.size();
//             这里记录大小是防止当前层遍历的时候加入了下一层的节点而打乱当前层的遍历
            for(int i=0;i(list));
//             返回结果加入当前层
            j=j==0?1:0;
//             三目表达式,奇偶层交换
        }
        return res;
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/711605.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号