java实现第八届蓝桥杯树型显示
JAVA 实现 显示 蓝桥 第八届
2023-09-14 08:58:10 时间
树型显示
题目描述
对于分类结构可以用树形来形象地表示。比如:文件系统就是典型的例子。
树中的结点具有父子关系。我们在显示的时候,把子项向右缩进(用空格,不是tab),并添加必要的连接线,以使其层次关系更醒目。
下面的代码就是为了这个目的的,请仔细阅读源码,并填写划线部分缺少的代码。
import java.util.*;
class MyTree
{
private Map<String, List<String>> map_ch = new HashMap<String, List<String>>();
private Map<String,String> map_pa = new HashMap<String,String>();
public void add(String parent, String child)
{
map_pa.put(child, parent);
List<String> lst = map_ch.get(parent);
if(lst==null){
lst = new ArrayList<String>();
map_ch.put(parent, lst);
}
lst.add(child);
}
public String get_parent(String me){
return map_pa.get(me);
}
public List<String> get_child(String me){
return map_ch.get(me);
}
private String space(int n)
{
String s = "";
for(int i=0; i<n; i++) s += ' ';
return s;
}
private boolean last_child(String x){
String pa = map_pa.get(x);
if(pa==null) return true;
List<String> lst = map_ch.get(pa);
return lst.get(lst.size()-1).equals(x);
}
public void show(String x){
String s = "+--" + x;
String pa = x;
while(true){
pa = map_pa.get(pa);
if(pa==null) break;
s = ___________________________________ ; // 填空 s = (last_child(pa) ? " " : "|") + space(4) + s;
}
System.out.println(s);
}
public void dfs(String x){
show(x);
List<String> lst = map_ch.get(x);
if(lst==null) return;
for(String it: lst){
dfs(it);
}
}
}
public class TreeView
{
public static void main(String[] args)
{
MyTree tree = new MyTree();
tree.add("root", "dog");
tree.add("root", "cat");
tree.add("root", "duck");
tree.add("dog", "AAdog");
tree.add("dog", "BBdog");
tree.add("dog", "CCdog");
tree.add("AAdog", "AAdog01");
tree.add("AAdog", "AAdog02");
tree.add("cat", "XXcat");
tree.add("cat", "YYcat");
tree.add("XXcat","XXcat-oo");
tree.add("XXcat","XXcat-qq");
tree.add("XXcat-qq", "XXcat-qq-hahah");
tree.add("duck", "TTduck");
tree.add("TTduck", "TTduck-001");
tree.add("TTduck", "TTduck-002");
tree.add("TTduck", "TTduck-003");
tree.add("YYcat","YYcat.hello");
tree.add("YYcat","YYcat.yes");
tree.add("YYcat","YYcat.me");
tree.dfs("root");
}
}
输出结果为
s = (last_child(pa) ? " " : "|") + space(4) + s;
相关文章
- Java设置全局变量_java如何定义全局变量
- java启动器_JAVA基础:Java 启动器如何查找类
- 一致性哈希算法 Java实现
- 用java实现笛卡尔积_Java实现笛卡尔积
- JAVA对象转map_java处理字符串类型的map
- 【JAVA面试必会】JMM高并发详解(java内存模型、JMM三大特征、volatile关键字 )「建议收藏」
- Java模拟斗地主代码实现
- java 舆情分析_基于Java实现网络舆情分析系统研究与实现.doc[通俗易懂]
- java在线播放_Java实现视频在线播放flv视频
- Java线程池实现原理详解编程语言
- 系统命令Java实现Linux系统命令调用的探究(java调用linux)
- 数据库Java连接MySQL数据库实现数据添加(java添加mysql)
- Java实现Redis分布式锁(java实现redis锁)
- 利用Redis实现Java动态数据过期(redisjava过期)
- 管理使用Java实现Redis的有效期管理(redisjava过期)
- 键清理使用Java实现Redis过期键清理(redisjava过期)
- Redis Java实现的定时过期功能(redisjava过期)
- 清理使用Java实现Redis过期数据清除(redisjava过期)
- 键处理Java实现Redis过期键处理策略(redisjava过期)
- 缓存使用Redis Java实现高效过期缓存(redisjava过期)
- Java实现MySQL数据插入(java插入mysql)
- Linux平台上C语言接口调用Java语言实现(linux c调java)
- Java编程在Linux上的应用(java编程 linux)
- Linux测试搭配Java快速实现稳定性验证(linux测试java)
- Java编程操作Oracle数据库(java读oracle)
- java实现数据库主键生成示例