1、有一棵多叉树,将它打印出来。

import java.util.LinkedList;

/**
* 需求:按层打印一棵树
* 说明:树是保存在一个链表中
* created by wangjunfu on 2017-05-25.
*/
public class TreeNode {
String data;
TreeNode parent;
LinkedList<TreeNode> childlist; TreeNode() {
data = null;
childlist = new LinkedList();
parent = null;
} //递归显示并打印一棵树
private static void displayTree(TreeNode f, int level) { String preStr = ""; // 打印前缀
for (int i = 0; i < level; i++) {
preStr += " ";
} for (int i = 0; i < f.childlist.size(); i++) {
TreeNode t = f.childlist.get(i);
System.out.println(preStr + "-" + t.data); if (!t.childlist.isEmpty()) {
displayTree(t, level + 1);
}
}
}
}

2、按层打印一棵树

下面抛个砖,一棵树,如何按层去打印呢?

我使用了一个最笨的办法,就是先存在一个list里,然后再排序打印,我知道这不是我想要的结果,但我确实想不出其它方法了,希望看到的大神抽空回个帖子,万分感谢!

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList; /**
* 需求:按层打印一棵树
* 说明:树是保存在一个链表中
* created by wangjunfu on 2017-05-25.
*/
public class TreeNode_Level {
Integer level;
String data;
TreeNode_Level parent;
LinkedList<TreeNode_Level> childlist; public Integer getLevel() {
return level;
} public void setLevel(Integer level) {
this.level = level;
} TreeNode_Level() {
data = null;
childlist = new LinkedList();
parent = null;
} // 递归读取一棵树
private ArrayList<TreeNode_Level> displayTree(TreeNode_Level f, int level) { ArrayList<TreeNode_Level> result = new ArrayList<>();
if (f == null) {
return result;
} for (int i = 0; i < f.childlist.size(); i++) {
TreeNode_Level obj = f.childlist.get(i);
obj.level = level;
result.add(obj); if (!obj.childlist.isEmpty()) {
displayTree(obj, level + 1);
}
} return result;
} // 排序、按层打印结果
private void print() {
TreeNode_Level f = null; // 到库里取数据 ArrayList<TreeNode_Level> list = displayTree(f, level = 1); Collections.sort(list, new Comparator<TreeNode_Level>() {
@Override
public int compare(TreeNode_Level o1, TreeNode_Level o2) {
// 正序排序
return o1.getLevel().compareTo(o2.getLevel());
}
}); list.forEach(item -> System.out.println(item.data));
}
}

如何打印一棵树(Java)的更多相关文章

  1. 小希的迷宫(MST单棵树判断法则)

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  2. A Simple Problem with Integers(100棵树状数组)

    A Simple Problem with Integers Time Limit: 5000/1500 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  3. AVL树----java

                                                                                        AVL树----java AVL ...

  4. 2017年陕西省网络空间安全技术大赛——种棵树吧——Writeup

    2017年陕西省网络空间安全技术大赛——种棵树吧——Writeup 下载下来的zip解压得到两个jpg图片,在Kali中使用binwalk查看文件类型如下图: 有两个发现: 1111.jpg 隐藏了一 ...

  5. SDUT 2129 树结构练习——判断给定森林中有多少棵树

    树结构练习——判断给定森林中有多少棵树 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description  众 ...

  6. B树Java代码实现以及测试

    B树定义 B 树又叫平衡多路查找树.一棵m阶的B 树 (m叉树)的特性如下: 根节点至少有两个孩子 每个非根节点至少有M/2(上取整)个孩子,至多有M个孩子. 每个非根节点至少有M/2-1(上取整)个 ...

  7. P1047_校门外的树(JAVA语言)

    题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米. 我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置: 数轴上的每个整数点,即0,1,2,-,L都种 ...

  8. LeetCode——Same Tree(判断两棵树是否相同)

    问题: Given two binary trees, write a function to check if they are equal or not. Two binary trees are ...

  9. ✡ leetcode 156. Binary Tree Upside Down 旋转树 --------- java

    156. Binary Tree Upside Down Add to List QuestionEditorial Solution My Submissions   Total Accepted: ...

随机推荐

  1. .NET Core开发日志——HttpContext

    之前的文章记述了从ASP.NET Core Module到KestrelServer的请求处理过程.现在该聊聊如何生成ASP.NET中我们所熟悉的HttpContext. 当KestrelServer ...

  2. Cnblog Markdown编辑器

    第一次使用Cnblog Markdown编辑器 1.在博客园使用 Markdown 与 LATEX[1] 1.1.开启MarkDown编辑器 选择 Markdown 撰写博文:在博客园管理-选项中,将 ...

  3. Vue SSR 配合Java的Javascript引擎j2v8实现服务端渲染2创建Vue2+webpack4项目

    前提 安装好nodejs并配置好环境变量,最好是 node10,https://nodejs.org/en/download/ 参考我之前的文章 debian安装nodejs Yarn &&a ...

  4. Xcode 编辑器之Workspace,Project,Scheme,Target

    一,前言 最近老是突然对Workspace,Project,Scheme,Target四者的关系有些疑惑,所以查阅资料总结一下. 二,Workspace,Project,Scheme,Target四者 ...

  5. crm项目整理

    crm项目整理   一.开发背景 由于公司人员的增多,原来通过excel表格存取方式过于繁琐,而且对于公司人员的调配和绩效考核等不能做到精确处理,所以开发crm系统,开始开发只是针对销售人员和客户,后 ...

  6. LeetCode 977 Squares of a Sorted Array 解题报告

    题目要求 Given an array of integers A sorted in non-decreasing order, return an array of the squares of ...

  7. 《HTTP - 基于http的认证》

    推荐一首歌 - 好吧,今天刚入职第二天,也没听歌. 哈哈哈哈. 1:何为认证? - 其实这个问题就比较宽泛了,总的来说,就是你有证明你身份的标识. - 和人类社会一样,你花了钱想看一场场演唱会,但是谁 ...

  8. 20165336 2017-2018-2 《Java程序设计》第7周学习总结

    20165336 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 查询操作:向数据库发送SQL查询语句,处理查询结果,关闭连接. 顺序查询:next()方法向 ...

  9. 20165336 预备作业3 Linux安装及学习

    Linux 安装及学习 一.VirtualBox和Ubuntu的安装 依照老师所给的步骤下载了VirtualBox 5.2.6和Ubuntu 16.04.3. 按照步骤一步一步进行了安装,出现的问题有 ...

  10. Python开发【笔记】:从海量文件的目录中获取文件名--方法性能对比

    Python获取文件名的方法性能对比 前言:平常在python中从文件夹中获取文件名的简单方法   os.system('ll /data/')   但是当文件夹中含有巨量文件时,这种方式完全是行不通 ...