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
原文地址:https://www.cnblogs.com/a1439775520/p/13076973.html