网易:层次遍历二叉树
题目描述
分层遍历二叉树 用java实现树结构,分层遍历二叉树。给定一棵二叉树,要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一层单独输出一行),每一层要求访问的顺序为从左到右,再按照相同规则从下至上遍历一遍,树节点定义如下 class Node { int data; Node left; Node right; } 输入描述 图:__1__/ \__2__ 3__/ \ \4 __5__ 67 8 上面的输入为:1, 2, 3, 4, 5, 0, 6, 0, 0, 7, 8注:0代表这个位置没有数字,数据长度不超过1024。 输出描述 按照层级正向和反向输出二叉树,注意输出行末没有空格 示例1 输入 1, 2, 3, 4, 5, 0, 6, 0, 0, 7, 8 输出 1 2 3 4 5 6 7 87 8 4 5 6 2 3 1
代码
import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Queue; import java.util.Scanner; class Node{int val;Node left;Node right;public Node(int val){this.val = val;} } public class A1 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String[] str = sc.nextLine().split(",");int len = str.length;int[] data = new int[len];for(int i=0; i<len; i++){data[i] = Integer.valueOf(str[i]);}Node root = creat(data);List<List<Integer>> result = levelorder(root);for (int i = 0; i < result.size(); i++) {for (int j = 0; j < result.get(i).size(); j++) {System.out.print(result.get(i).get(j) + " ");}System.out.println();}System.out.println();for (int i = result.size()-1; i >= 0; i--) {for (int j = 0; j < result.get(i).size(); j++) {System.out.print(result.get(i).get(j) + " ");}System.out.println();}}public static Node creat(int[] objs){ArrayList<Node> datas =new ArrayList<Node>();// 将一个数组的值依次转换为Node节点for(int o:objs){datas.add(new Node(o));}//第一个数为根节点Node root=datas.get(0);//建立二叉树for (int i = 0; i <objs.length/2; i++) {//左孩子if(datas.get(i*2+1).val!=0){datas.get(i).left=datas.get(i*2+1);}//右孩子if((i*2+2)<datas.size() && datas.get(i*2+2).val!=0){//避免偶数的时候 下标越界datas.get(i).right=datas.get(i*2+2);}}return root;}public static List<List<Integer>> levelorder(Node Node) {Queue<Node> queue = new LinkedList<>();List<List<Integer>> result = new ArrayList<>(); if(Node == null) return result;queue.offer(Node); // 首先将根节点root入队while (!queue.isEmpty()) {// Queue不为空则循环List<Integer> node = new ArrayList<>();// 保存每一层节点的值int length = queue.size();// 每一层的节点数目while (length > 0) {Node tree = queue.poll();if (tree.left != null) {queue.offer(tree.left);}if (tree.right != null) {queue.offer(tree.right);}node.add(tree.val);length--;}// 循环结束后,得到的Queue为下一层做准备,node为本层遍历结果 result.add(node);}return result;} }
转载于:https://www.cnblogs.com/haimishasha/p/11370583.html
网易:层次遍历二叉树相关推荐
- 层次遍历二叉树(编程之美3.10)
问题(假定根节点位于第0层) 1. 层次遍历二叉树(每层换行分开) 2. 层次遍历二叉树指定的某层 例如 上图中 1. 1 2 3 4 5 6 7 8 2. 第三层 7 8 可以看出得出第二问的解,第 ...
- 按层次遍历二叉树_LeetCode | 102.二叉树的层次遍历
这次来写一下 LeetCode 的第 102 题,二叉树的层次遍历. 题目描述 题目直接从 LeetCode 上截图过来,题目如下: 上面的题就是 二叉树的层次遍历 题目的截图,同时 LeetCode ...
- 按层次遍历二叉树算法
问题:按层次遍历二叉树 在网上看了一些按层次遍历二叉树的算法,这里修改了一下通过队列来按层次遍历二叉树的算法 --------------------------------------------- ...
- 如何层次遍历二叉树(使用队列作为辅助工具)
在此之前,我们已经掌握了使用递归算法实现二叉树先序遍历.中序遍历和后序遍历的流程,这里我们加大一下难度,探讨该如何实现二叉树的层次遍历算法. 相信有朋友至此会直接回答"用递归算法解决&quo ...
- c语言实现层次遍历二叉树完整代码
//混用了一下c和c++(仅输入输出混用了一下,其他没有)#include<stdio.h> #include<stdlib.h> #include<iostream&g ...
- 二叉树层序遍历 c语言,C语言按层次遍历二叉树算法
下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. #define MaxSize 1000 typedef char ElemType; t ...
- PTA - 按层次遍历二叉树
按层次遍历二叉树 题目:以字符串的形式定义一棵二叉树的先序序列,若字符是'#', 表示该二叉树是空树,否则该字符是相应结点的数据元素.读入相应先序序列,建立二叉树,然后按层次遍历该二叉树并输出结点数据 ...
- java层次遍历建立二叉树_java层次遍历二叉树
思路很简单.通过队列,先将头结点放入队列,再遍历每个节点的左节点和右节点. import java.util.ArrayList; import java.util.LinkedList; /** * ...
- c++根据二叉树的层次遍历建立二叉树_LeetCode | 102.二叉树的层次遍历
这次来写一下 LeetCode 的第 102 题,二叉树的层次遍历. 题目描述 题目直接从 LeetCode 上截图过来,题目如下: 102.二叉树的层次遍历题目 上面的题就是 二叉树的层次遍历 题目 ...
最新文章
- NFS---linux远程挂载
- c语言中的常用函数的使用,C语言的常用库函数使用方法分析及用途
- OpenInfra 基金会积极推动开源项目在中国市场的发展与应用
- 7.边缘检测:2D运算——回顾、高斯滤波器2D的导数、Sigma对导数的影响_1
- java 蓝桥杯 算法训练 区间k大数查询(题解)
- opencv-api getStructuringElement
- 簡單設定 kernel 選項在使用 iptables 前
- python 爬虫_python爬虫技术汇总
- 企业网管服务器架设资料(极品中的极品)
- ASP.NET Razor - html中使用if else
- 汇川PLC编程软件AutoShop的应用
- tar 打包隐藏文件
- ActiveMQ专题2 —— ActiveMQ下载和安装(Linux版)
- 各种门锁的内部结构图_有没有这种执手门锁的内部结构图?
- Eddy‘s picture
- 游戏玩到这种程度,酱紫真的好吗?
- Ruby_01_环境安装
- 《succes can be a lonely road》 【istrangeboy精品英文励志短文系列】之最美英文励志诗《成功是一条孤独之路》英译汉
- oracle查询timestamp范围,Oracle TIMESTAMP数据类型
- android 实现视频播放功能,android开发之简单视频播放器(VideoView)
热门文章
- (一)通过深度学习进行COVID-19诊断
- 使用Upida/Jeneva.Net验证传入的JSON
- ASP.NET Core 2.0身份和角色管理入门
- 关于.NET的单元测试
- vue用html做报表,Vue配置生成无限分割的表格,可快速实现任意复杂报表
- 心态很容易受别人影响_为什么你情绪容易受别人影响,是因为不懂得这个道理...
- eureka常见错误
- php 标签库,PHP.MVC的模板标签系统之模板标签库
- 计算机生物模拟试题,2017年高考理综生物部分模拟试题
- HTML怎么实现抽奖变色,html+css+js实现简单抽奖