• java实现显示为树形


    ** 显示为树形**

    树形结构应用十分广泛。

    下面这段代码根据用户添加的数据,在内存中构建一个逻辑上等价的树形结构。

    通过ShowTree() 可以把它显示为控制中的样子。

    其中:
    a.add(‘a’, ‘b’);
    a.add(‘b’, ‘e’);
    表示:‘b’ 作为 ‘a’ 的孩子节点;‘e’ 作为 'b’的孩子节点。
    如代码中给出的示例数据,输出结果应该为:

    a–b--e
    | |–f--j
    | |–k
    |–c
    |–d--g–h
    |–i

    请阅读下面的代码,填写缺失的部分(下划线部分)。

    注意:请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
    直接写在题面中不能得分。

    import java.util.*;
    
    class MyTree
    {
        private Map map = new HashMap();
        
        public void add(char parent, char child)
        {
            List<Character> t = (List<Character>)map.get(parent);
            if(t==null)
            {
                t = new Vector<Character>();
                ____________________;  // 填空1
            }
            t.add(child);
        }
        
        public List<Character> getChild(char x)
        {
            return (List<Character>)map.get(x);
        }
    }
    
    public class My
    {
        public static List<String> showTree(MyTree tree, char x)
        {
            List<Character> t = tree.getChild(x);
            
            List<String> r = new Vector<String>();
            
            if(t==null)
            {
                r.add("" + x);
                return r;
            }
                    
            for(int i=0; i<t.size(); i++)
            {
                List<String> ri = showTree(tree, t.get(i));
                for(int j=0; j<ri.size(); j++)
                {
                    String pre = "|  ";
                    if(j==0)
                    {
                        if(i==0)
                            pre = x + "--";
                        else 
                            pre = "|--";
                    }
                    else
                    {
                        if(i==__________________)    // 填空2
                            pre = "   ";
                        else
                            pre = "|  ";
                    }
                    
                    r.add(pre + ri.get(j));
                }
            }
            
            return r;
        }
        
        public static void main(String[] args)
        {
            MyTree a = new MyTree();
            a.add('a', 'b');
            a.add('b', 'e');
            a.add('b', 'f');
            a.add('a', 'c');
            a.add('a', 'd');
            a.add('d', 'g');
            a.add('d', 'i');
            a.add('g', 'h');
            a.add('f', 'j');
            a.add('f', 'k');
            
            List<String> lst = showTree(a, 'a');
            for(int i=0; i<lst.size(); i++)
            {
                System.out.println(lst.get(i));
            }
        }
    }
    
    
    map.put(parent, t)
    i== t.size()-1
    
  • 相关阅读:
    optorsim自带例子调试总结
    搭建Hadoop2.0(三)自带实例运行
    被遮挡的绝对定位
    Javascript获取地址参数
    js屏蔽浏览器(IE和FireFox)的刷新和右键等功能
    Tencent://Message/协议的实现原理
    Form(思归):动态控件的状态问题
    [正则表达式]C# 给数字字符串加上千位逗号
    js滚动条
    模拟滚动条效果
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12947269.html
Copyright © 2020-2023  润新知