编程题
树形显示 ### 题目描述 **本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。** 对于分类结构可以用树形来形象地表示。比如:文件系统就是典型的例子。 树中的结节具有父子关系。我们在显示的时候,把子项向右缩进(用空格,不是tab),并添加必要的连接线,以使其层次关系更醒目。 ![图片描述](https://doc.shiyanlou.com/courses/uid1580206-20210219-1613723812618) 下面的代码就是为了这个目的的,请仔细阅读源码,并填写划线部分缺少的代码。 ### 源代码 **Java** ```java import java.util.*; class MyTree { private Map> map_ch = new HashMap>(); private Map map_pa = new HashMap(); public void add(String parent, String child) { map_pa.put(child, parent); List lst = map_ch.get(parent); if(lst==null){ lst = new ArrayList(); map_ch.put(parent, lst); } lst.add(child); } public String get_parent(String me){ return map_pa.get(me); } public List get_child(String me){ return map_ch.get(me); } private String space(int n) { String s = ""; for(int i=0; i 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 = ___________________________________; } System.out.println(s); } public void dfs(String x){ show(x); List lst = map_ch.get(x); if(lst==null) return; for(String it: lst){ dfs(it); } } } public class Main { 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"); } } ```
查看答案
赣ICP备20007335号-2