package cn.itcast.oa.test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import org.junit.Test;
import cn.itcast.oa.domain.Department;
/**
* 说明:不能使用多层循环的方式,因为需要能支持任意层。
*/
public class TreeViewPractice {
/**
* 练习一:打印所有顶层部门及其子孙部门的信息(名称) 提示:假设有一个 打印部门树 的信息 的方法
*
* 要求打印如下效果:
*
* <pre>
* 市场部
* 市场1部
* 市场2部
* 21
* 22
* 开发部
* 开发1部
* 开发2部
* </pre>
*/
@Test
public void printAllDepts_1() {
List<Department> topList = findTopLevelDepartmentList();
// // 方式一:
for (Department top : topList) {
printTree(top);
}
// 方式二:
//printTreeList(topList);
}
// 方式一:显示一颗以top为顶点的部门树的信息(显示所有的节点名称)
private void printTree(Department top) {
// 1个顶点
System.out.println(top.getName());
// 0或多个子树
for (Department child : top.getChildren()) {
printTree(child);
}
}
// 方式二:显示一堆树的信息
private void printTreeList(Collection<Department> topList) {
for (Department top : topList) {
// 1个顶点
System.out.println(top.getName());
// 0或多个子树
printTreeList(top.getChildren());
}
}
/**
* 练习二:打印所有顶层部门及其子孙部门的信息(名称),用不同的缩进表示层次(使用全角空格)。<br>
* 子部门的名称前比上级部门多一个空格,最顶层部门的名字前没有空格。 提示:假设有一个打印部门集合中所有部门信息的方法
*
* 要求打印如下效果:
*
* <pre>
* ┠市场部
* ┠市场1部
* ┠市场2部
* ┠21
* ┠22
* ┠开发部
* ┠开发1部
* ┠开发2部
* </pre>
*/
@Test
public void printAllDepts_2() {
List<Department> topList = findTopLevelDepartmentList();
printTreeList_2(topList, "┣");
}
// 显示一堆树的信息,并且名称前有空格
private void printTreeList_2(Collection<Department> topList, String prefix) {
for (Department top : topList) {
// 1个顶点
System.out.println(prefix + top.getName());
// 0或多个子树
printTreeList_2(top.getChildren(), " " + prefix);
}
}
/**
* 结构如下:
*
* <pre>
* ┠市场部
* ┠市场1部
* ┠市场2部
* ┠21
* ┠22
* ┠开发部
* ┠开发1部
* ┠开发2部
* </pre>
*
* @return 所有最顶层的部门的列表
*/
public static List<Department> findTopLevelDepartmentList() {
Department dept_1_1 = new Department();
dept_1_1.setId(new Long(11));
dept_1_1.setName("市场1部");
Department dept_1_2 = new Department();
dept_1_2.setId(new Long(12));
dept_1_2.setName("市场2部");
Department dept_1_2_1 = new Department();
dept_1_2_1.setId(new Long(121));
dept_1_2_1.setName("21");
Department dept_1_2_2 = new Department();
dept_1_2_2.setId(new Long(122));
dept_1_2_2.setName("22");
dept_1_2_1.setParent(dept_1_2);
dept_1_2_2.setParent(dept_1_2);
Set<Department> children_0 = new LinkedHashSet<Department>();
children_0.add(dept_1_2_1);
children_0.add(dept_1_2_2);
dept_1_2.setChildren(children_0);
// ================================
Department dept_1 = new Department();
dept_1.setId(new Long(1));
dept_1.setName("市场部");
dept_1_1.setParent(dept_1);
dept_1_2.setParent(dept_1);
Set<Department> children_1 = new LinkedHashSet<Department>();
children_1.add(dept_1_1);
children_1.add(dept_1_2);
dept_1.setChildren(children_1);
// ---
Department dept_2_1 = new Department();
dept_2_1.setId(new Long(21));
dept_2_1.setName("开发1部");
Department dept_2_2 = new Department();
dept_2_2.setId((new Long(22)));
dept_2_2.setName("开发2部");
Department dept_2 = new Department();
dept_2.setId(new Long(2));
dept_2.setName("开发部");
dept_2_1.setParent(dept_2);
dept_2_2.setParent(dept_2);
Set<Department> children_2 = new LinkedHashSet<Department>();
children_2.add(dept_2_1);
children_2.add(dept_2_2);
dept_2.setChildren(children_2);
// ---
List<Department> depts = new ArrayList<Department>();
depts.add(dept_1);
depts.add(dept_2);
return depts;
}
}
相关推荐
多叉树的遍历,可以打印出树形结构,也可以只打印叶节点,或打印指定层的节点(一位德国教授写的)
多叉树的遍历,可以打印出树形结构,也可以只打印叶节点,或打印指定层的节点(一位德国教授写的文章)可以按照文章中给的网址下载源代码,
树形结构的调试打印
这是一篇讲究套路的数据结构实战教学文,阅读需要约 20 分钟。 先来回答三个问题。 为什么要打印树形结构 树形结构是算法里很常见的一种数据结构,从二叉树到多叉树,还有很多变种。很多涉及到算法的工作,就需要程序员自己手动实现树形结构,但出于结构本身复杂性,不太容易做对,需要一种调试工具来检测正确性。一般的调试手段无非就是加打印, GDB 上断点,写测试用例等,但这些局部以及外部的调试信息对于数
按凹入表形式打印树形结构。
无按凹入表形式打印树形结构。(1)利用树的先根遍历方法; (2)利用结点的深度控制横向位置。
【Java核心技术】用于自连接的递归调用示例
package cn.ls.tree; import java.util.HashSet; import java.util.Set; /** * 部门 * * @author tyg * */ public class Department { private Long id; private Department parent; //用于自连接. private
人形机器人核心架构梳理
定义:机器人是能进行运动、操纵或定位且具有一定程度自主能力的可编程执行机构。按外在形态分类可分为传统机器人和人形机器人,其中人形机器人是一种利用人工智能和机器人技术制造的具有类似人类外观和行为的机器人。
基于车牌识别的停车收费系统的设计与实现(源码+开题)
本系统(程序源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景: 随着城市化进程的加速和汽车保有量的增加,停车难成为了一个普遍存在的问题。传统的停车收费方式存在着效率低下、管理混乱等问题。因此,开发一款基于车牌识别的停车收费系统具有重要的现实意义。研究意义: 基于车牌识别的停车收费系统可以有效地解决传统停车收费方式在效率和准确性方面的问题,提高停车服务的效率和质量。
单位树状展示的java项目_java程序打印一个树状的目录结构
java完成一个程序,打印一个树状的目录结构。子目录与父目录之间有两个空格的缩进。import java.io.File;/***完成一个程序,打印一个树状的目录结构。子目录与父目录之间有两个空格的缩进*/public class TreeDir {public static void main(String[] args) {String pathname = “C:/Documents and...
用友U8 API 二次开发:WebService封装7个核心DLL引用与U8Login登录避坑
本文详细介绍了用友U8 API二次开发中的WebService封装与U8Login登录优化实践。通过7个核心DLL的正确引用、U8Login登录机制的深度解析及IIS环境下的特殊处理方案,为开发者提供了一套高可用性的通用解决方案,助力企业实现ERP系统的高效集成与数字化转型。
按照树形结构直观地打印出一棵二叉树(Java)
平时无论是工作还是学习中,在写代码时,树总是一个非常常见的数据结构。在我们完成一棵树的构建之后,如果我们想要看这棵树的结构...
智能枕头
睡觉和吃饭是一样重要的,一个人想要健康的体魄,不仅要饮食得当,更需要有一个好的睡眠质量。随着人们生活品质的提高,人们对于睡眠的要求越来越高,那么就非常需要一款舒适的枕头。为了适应市场的需求,我爱物联网推出了智能枕头。因为智能枕头可以给头部及颈椎一个良好的承托力,舒适、柔软、放松,让人更好的进入睡眠。 目录 一、智能枕头方案介绍 二、智能枕头的优点 三、智能枕头功能介绍 四、智能枕头APP开发 五、...
IC验证 AHB-RAM 项目(二)——接口与事务代码的编写
本文介绍了准备工作及接口、事务相关代码编写要点。在接口部分,重点说明了lvc_ahb_if.sv、rkv_ahbram_if.sv和rkv_ahbram_tb.sv三个关键文件的功能,其中rkv_ahbram_if.sv通过动态任务实现复位信号控制。事务部分则涉及lvc_ahb_types.sv中的枚举类型定义和lvc_ahb_transaction.sv中的随机化变量设置,用于构建AHB传输激励。整个验证环境采用模块化设计,通过接口实现TB与DUT的通信,为后续验证工作奠定基础。
Linux-tree命令-树状结构打印目录
tree命令-树状结构打印目录 1 简介 tree命令可以以树状结构打印目录。本文简要介绍其在mac上的安装和使用。 2 安装 brew install tree 3 使用 3.1 最简单的例子 打印所有指定目录下的目录和文件(包括所有后代) $ tree chengc-demos/ chengc-demos/ ├── pom.xml └── src └── main ├...
汽车IVI中控开发入门及进阶(三十八):手机投屏HiCar开发
为了兼容这部分手机,车机端在向手机端发送USB控制命令字的同时,需要启动mDNS Server,广播车机端IP地址和HiCar SDK侦听的Server Socket端口(IP地址和端口在HiCar SDK初始化USB driver时,告知车机),在检测到手机断开USB连接时关闭mDNS Server。厂商在集成HiCar SDK开发HMI应用时,不可避免会使用到智能座舱的敏感权限,例如位置权限、摄像头权限、麦克风权限等,SDK初始化时,厂商HMI应用需要设置必要的车机参数供SDK使用。
Java文件目录树状结构:控制台打印某个文件夹下的文件目录树状结构
1 package com.zhen.file; 2 3 import java.io.File; 4 5 /* 6 * 控制台打印某个文件夹下的文件目录树状结构 7 * 递归算法 8 */ 9 10 public class FileTree { 11 12 public static void main(String[...
SAP 公司间采购简介
SAP公司间采购(Intercompany Procurement)是指企业集团内部不同法人实体之间的采购和销售流程。这种流程在跨国公司或有多个独立运营子公司的企业中非常常见。SAP提供了标准的功能来处理公司间采购,确保财务和物流流程的透明性和效率。以下是SAP公司间采购的基本流程及其相关模块的简介。
机器学习笔记——30种常见机器学习算法简要汇总
本笔记介绍机器学习中常见的30种机器学习算法。
打印目录树状结构(递归算法)
importjava.io.File; /** *打印目录树状结构(递归算法) */ publicclassTestPrintFile{ publicstaticvoidprintFile(Filefile,intlevel){ for(inti...
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
GoTree:终端中的树状结构打印工具
GoTree:终端中的树状结构打印工具 GoTree 是一个使用 Go 语言编写的开源项目,旨在提供一个简单、快速的方式在终端中打印树状结构。 项目基础介绍 GoTree 是一个轻量级的 Go 模块,它被设计用来在终端中以树状图的形式显示信息。这个项目受到 Linux 中的 tree 命令的启发,其目标是提供一个易于使用且扩展性强的工具。GoTree 仅使用 Go 语言的标准库,保证了其运行的效率...
深度学习工具包 DeepLearningToolbox
深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[](https://bitdeli.com/free "Bitdeli Badge")
pscad IEEE标准系统搭建说明
pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。
MP2642GR-Z双向均衡原理与PIC18F4585实时控制实战
电池组串联失配是储能系统容量衰减的核心瓶颈,其本质源于单体电压/容量差异引发的‘木桶效应’。主动均衡通过双向DC-DC能量转移,实现节间电荷重分配,相比被动均衡具备高效率、快响应、可逆向等技术优势。MP2642GR-Z作为集成同步整流与自适应频率调制的单芯片均衡控制器,配合PIC18F4585的硬件死区PWM与毫秒级闭环固件架构,共同构成高可靠、低功耗、易扩展的工程化方案。该组合广泛适用于通信基站备用电源、光伏储能、电动工具等对续航精度与长期稳定性要求严苛的中功率场景。
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
递归打印目录的树状结构
package com.liu.IO; import java.io.File; public class DiguiDemo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub File file = new F
Java_File类讲解_打印目录树状结构_递归算法
Java_File类讲解_打印目录树状结构_递归算法 1 package cn.xiaocangtian.testFile; 2 3 import java.io.File; 4 5 public class FileTree { 6 public static void main(String[] args)...
探索可读性超强的树状结构打印库 —— PrettyPrintTree
探索可读性超强的树状结构打印库 —— PrettyPrintTree 在编程中,展示和调试数据结构往往成为一项挑战,特别是像树和链表这样的复杂结构。但今天,我们带来了一款开源神器——PrettyPrintTree,它能将这些抽象的数据结构转化为清晰、美观的可视化表示。 项目简介 PrettyPrintTree 是一个 Python 包,专为打印树形结构和链表设计。无论你的节点数据如何,只要可以转换...
【亲测免费】 探索树状结构的优雅打印:xlab/treeprint 全解析
探索树状结构的优雅打印:xlab/treeprint 全解析 在数据可视化和代码调试领域,清晰直观地展示复杂数据结构往往能极大提升工作效率。今天,我们要介绍的是一个简洁而强大的Go语言库 —— xlab/treeprint,它允许开发者以类似经典“tree”命令行工具的方式,打印出程序中的数据结构为易于理解的ASCII树形图。 项目介绍 xlab/treeprint 是一个Go语言包,专门用于构建...
lua 如何输出树状结构的table?
为了让游戏前端数据输出更加条理,做了一个简单树状结构来打印数据。ccmlog.lualocal function __tostring(value, indent, vmap) local str = '' indent = indent or '' vmap = vmap or {} --递归结束条件 if (type(value) ~= 'table')
linux下打印系统进程树
要求编写程序,获取系统当前执行进程的信息,并以树状结构打印所有系统进程。 分析问题,其包括两个部分,一是打印当前进程信息:首先要明确需要打印进程的哪些信息,首先肯定是进程标志符信息,包括进程ID、PID(父进程ID)和进程组ID(PGID),其次是进程名称信息;二
打印File目录树状结构原理_控制台打印_递归算法
import java.io.File; public class FileTree { public static void main(String[] args) { File f=new File("d:/BaiduYunDownload"); printTree(f,0); } public static void printTree(File f,int
4757



被折叠的 条评论
为什么被折叠?



