java 文件遍历排序_Java的二叉树排序以及遍历文件展示文本格式的文件树
Java二叉树排序算法排序二叉树的描述也是一个递归的描述, 所以排序二叉树的构造自然也用递归的:
排序二叉树的3个特征:
1:当前node的所有左孩子的值都小于当前node的值;
2:当前node的所有右孩子的值都大于当前node的值;
3:孩子节点也满足以上两点
package test.sort;
public class BinaryNode {
private int value;//current value
private BinaryNode lChild;//left child
private BinaryNode rChild;//right child
public BinaryNode(int value, BinaryNode l, BinaryNode r){
this.value = value;
this.lChild = l;
this.rChild = r;
}
public BinaryNode getLChild() {
return lChild;
}
public void setLChild(BinaryNode child) {
lChild = child;
}
public BinaryNode getRChild() {
return rChild;
}
public void setRChild(BinaryNode child) {
rChild = child;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
//iterate all node.
public static void iterate(BinaryNode root){
if(root.lChild!=null){
iterate(root.getLChild());
}
System.out.print(root.getValue() + " ");
if(root.rChild!=null){
iterate(root.getRChild());
}
}
/**
* add child to the current node to construct a tree.
* Time: O( nlog(n) )
* **/
public void addChild(int n){
if(n
if(lChild!=null){
lChild.addChild(n);
}
else{
lChild = new BinaryNode(n, null, null);
}
}
else{
if(rChild!=null){
rChild.addChild(n);
}
else{
rChild = new BinaryNode(n, null, null);
}
}
}
//test case.
public static void main(String[] args){
System.out.println();
int[] arr = new int[]{23,54,1,65,9,3,100};
BinaryNode root = new BinaryNode(arr[0], null, null);
for(int i=1; i
root.addChild(arr[i]);
}
BinaryNode.iterate(root);
}
}
Java遍历文件展示文本格式的文件树用java写一个代码变历文件树,打印出结构,类似在cmd输入命令tree的结果。
本来觉得很简单,做的时候才知道有点难。要是感兴趣, 你也可以试试。
package test.io;
//在网上找的,听说还是老字竹原创。代码简洁,但是我费了好大的功副消化
import java.util.ArrayList;
import java.util.List;
public class Folder {
public Folder(String title) {
this.title = title;
}
private String title;
private List children = new ArrayList();
public void addChild(Folder f) {
children.add(f);
}
public List getChildren() {
return children;
}
public void setChildren(List children) {
this.children = children;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String toString(String lftStr, String append) {
StringBuilder b = new StringBuilder();
b.append(append + title);
b.append("/n");
if (children.size() > 0) {
for (int i = 0; i < children.size() - 1; i++) {
b.append(lftStr+ children.get(i).toString(lftStr + "│ ",
"├-"));
}
b.append(lftStr+ children.get(children.size() - 1).toString(lftStr +
" ","└-"));
}
return b.toString();
}
public static void main(String[] args) {
Folder root = new Folder("菜单列表");
Folder f1 = new Folder("开始菜单");
root.addChild(f1);
Folder f1_1 = new Folder("程序");
f1.addChild(f1_1);
Folder f1_1_1 = new Folder("附件");
f1_1.addChild(f1_1_1);
Folder f1_1_1_1 = new Folder("娱乐");
f1_1_1.addChild(f1_1_1_1);
Folder f1_1_1_2 = new Folder("娱乐2");
f1_1_1.addChild(f1_1_1_2);
Folder f1_2 = new Folder("辅助工具");
f1.addChild(f1_2);
System.out.println(root.toString(" ", "$"));
}
}
//**************************************
//经过消化之后我修改的。可打印文件结构
import java.io.*;
public class DocTree {
File root = null;
public DocTree(File f){
this.root = f;
}
public static void main(String[] args){
File root = new File("c://test");
DocTree tree = new DocTree(root);
System.out.println(tree.toString(" ", ""));
}
public String toString(String leftStr, String append){
StringBuilder b = new StringBuilder();
b.append(append + root.getName());
b.append("/n");
if(!root.isFile()&&root.listFiles().length!=0){
File[] files = root.listFiles();
DocTree[] docTrees = new DocTree[files.length];
for(int i=0; i
docTrees[i] = new DocTree(files[i]);
}
for (int i=0; i
b.append(leftStr + docTrees[i].toString(leftStr+"│", "├"));
}
b.append(leftStr + docTrees[docTrees.length-1].toString(leftStr + " ", "└"));
}
return b.toString();
}
}
//*****************************************
//然后我还是觉得理解起来不方便, 过几天说不定就忘记了,
//还是自己写一个, 虽然思想照抄, 但我觉得自己的理解起来很方便。
//带注释,
import java.io.*;
public class Tree {
File root = null;
public Tree(File f){
this.root = f;
}
/**
test
├1
│├目录1.txt
│├目录11
││├111.txt
││└112.txt
│└12
└test.pdf
*/
/**
* @param root 当前正在被扫描的根文件
* @param childLeftStr 如果该文件有孩子,childLeftStr
* 表示孩子节点的左面应该打印出来的结构性信息
* 拿上面的例子来说,根结点test的孩子的左面的
* 结构信息为"" 空,结点"目录11"的孩子的结构信息为"││",
* @param junction 结点图标,如果是该结点是它父亲的最后一个结点,
* 则为"└",否则为"├".
*/
public void showTree(File root, String childLeftStr, String junction){
//打印结点的信息
System.out.println(junction + root.getName());
//如果有孩子, 而且孩子的数目不为0
if(!root.isFile()&&root.listFiles().length!=0){
File[] files = root.listFiles();
//构造孩子结点
Tree[] children = new Tree[files.length];
for(int i=0; i
children[i] = new Tree(files[i]);
}
//打印孩子结点
for(int i=0; i
//对所有的孩子结点,先打印出左边的结构信息,
System.out.print(childLeftStr);
//递归调用showTree, 注意参数有所变化,文件加的深度增加的时候
,它的孩子的结构信息也会
//增加,如果不是最后一个孩子,则结构信息需加上"│"。
showTree(children[i].root,childLeftStr+"│", "├");
}
//最后一个孩子需要特殊处理
//打印结构信息
System.out.print(childLeftStr);
//如果是最后一个孩子,则结构信息需加上" "。
//结点形状也调整为"└"
showTree(children[files.length-1].root, childLeftStr+" ","└");
}
}
public static void main(String[] args) {
File f = new File("C://test");
Tree t = new Tree(f);
t.showTree(f,"", "");
}
}
java 文件遍历排序_Java的二叉树排序以及遍历文件展示文本格式的文件树相关推荐
- tree traversal (树的遍历) - 层序遍历 (level order traversal) - 二叉树的层序遍历
tree traversal (树的遍历) - 层序遍历 (level order traversal) - 二叉树的层序遍历 1. tree traversal (树的遍历) 1.1 深度优先搜索 ...
- java实现数组排序代码_Java使用选择排序法对数组排序实现代码
编写程序,实现将输入的字符串转换为一维数组,并使用选择排序法对数组进行排序. 思路如下: 点击"生成随机数"按钮,创建Random随机数对象: 使用JTextArea的setTex ...
- java list《》_Java中List集合的遍历
一.对List的遍历有三种方式 List list = new ArrayList(); list.add("testone"); list.add(&qu ...
- 日撸 Java 三百行: DAY21 二叉树的深度遍历的递归实现
0.主题 今天实现递归版本的二叉树深度遍历,并实现两个基于此遍历的方法,即求二叉树深度与二叉树结点数. 1.二叉树的深度遍历 深度优先遍历,顾名思义就是一直往深处遍历,直到无路可走再回头换个方向继续往 ...
- java读取doc、docx、ppt、pptx、xls、xlsx格式的文件
前言: 通常我们用apache 的POI库对以上文档进行操作,apache POI官网 apache POI官网 这里推荐到官网下载导入到项目,maven下载的它会缺少几个包. 格式上后缀带x(doc ...
- java系统排序_Java实现二进制排序树
在计算机科学中,树是非常重要的数据结构二叉排序树是树的一种特殊情况二叉排序树是,它的每个节点只能有两个子节点,左子树的节点小于其父节点,右子树中的节点大于其父节点. 父节点二进制排序树在搜索中使用非常 ...
- java的字典序排序_java实现字典序排序
2.编一个程序,定义一个字符串数组,输入若干国家名称(所有名称全用大 写或者全用小写),设计一个算法按字典顺序将这些国家名称进行排序. 3.编写一个程序,实现...... 2.编一个程序,定义一个字符 ...
- java冒泡排序函数验证_java冒泡排序-选择排序-插入排序-使用API中文文档直接调用函数...
import java.util.Arrays; public class ArrayDemo2_3 { public static void main(String []args) { //---- ...
- java冒泡排序程序流图_java实现选择排序和冒泡排序及执行流程图解
1. 选择排序:把第一个数与他后面的数进行比较,如果顺序则继续与后面比较,如果逆序则两数交换位置,继续将第一个数与交换位置后的数进行比较,这样就完成了第一轮排序.同理将第二位与其后的数比较,直到数组有 ...
最新文章
- Http Module 介绍(转)
- Git 删除远程仓库文件
- 安卓中经常使用控件遇到问题解决方法(持续更新和发现篇幅)(在textview上加一条线、待续)...
- 【随笔】写在2014年的第一天
- 服务器linux启动,Linux 服务器环境启动
- Codeforces 576D. Flights for Regular Customers(倍增floyd+bitset)
- torch.cat;Pytorch nn.MaxPool1d
- 黑莓C语言编程,经典回顾第一期:黑莓刷机
- 2020还是AI最火?推荐几本深度学习的书籍帮你入门!
- 谈论机器学习中,哪种学习算法更好有意义吗?
- iapp退出软件按钮代码_吱呀怎么退出登录-吱呀APP退出登录的方法
- C++中左移运算符<<、右移运算符>>、以及位与运算符
- SOA 服务设计-传统车载架构的迭代升级
- VUE项目练习大全(附github源码)
- 拉美外贸: 哥伦比亚网银支付PSE
- PARL源码走读——使用策略梯度算法求解迷宫寻宝问题
- Altium Designer 如何批量修改过孔盖油
- 2.1 Linux基础(命令-文件系统)
- 怎么用java实现直角三角形,java技术支持 输出一个直角三角形(下三角)
- opencv-python截取视频中的图片
热门文章
- 【Torch笔记】Tensor 简介与创建方法
- IOS margin失效问题,以及CSS媒体查询区分iPhone 6、 iPhone8、iPhone8 Plus和iPhoneX
- 页面缩放导致布局变乱
- 苹果备忘录怎么调字体大小_苹果手机恢复出厂设置备忘录里的便签内容都没了,怎么找回来啊 - 学显...
- 三星电子股价大涨 李健熙夫妇持股市值增95亿元
- 微信小程序添加开发者
- PS4怪物猎人世界服务器稳定吗,《怪物猎人世界》PS4/PS4 Pro运行对比 游戏帧数不稳定...
- 剑指offer在线编程(四)
- Css---去除点击表单输入框后出现的原生边框
- 兰州银行在深交所挂牌:2022年首个上市银行股,业绩相对稳定