刚才的不能正常显示, 重新发次
场景:
 有一组2纬数据,一个代表树节点的名字, 一个代表树节点出现的位置: 如下
 
 site    name 1       name1
 11      name2
 111     name3
 112     name4
 113     name5
 12      name6
 121     name7
 122     name8
 13      name9
 
 
按照site来计算树的出现位置: 这上面的数据对应如下的树:(就不用图片了, 使用文字简单按照缩进排列)
 
.name1 
.......name2
..............name3
..............name4
..............name5
.......name6
..............name7
..............name8
.......name9 
树的深度最多5层, 在数据量比较大的情况下 使用甚么算法比较高效呢?例如有个类, 保存了上面的2个属性,和一个集合
class Some{
public  String site;
public String name;
public List<Some> someList;
}
如何才可以把上面的数据结构用上面的类来做成一个树呢. 谢谢.

解决方案 »

  1.   

    自底向上构造树.构造一个集合A.开始时A=所有的节点.
    从A中选出一个site最长的节点.如上面最长的是, 111 ,112,113,121,122等,长度为3.
    将这个节点加入其夫节点.然后,从A中删除.当|A| = 1时构造完成.
      

  2.   

    public class Node{
       private String id;
       private String parentId;
       private String value;
       
       public Node(String id,String parentId,String value){
          this.id = id;
          ...
       }
    //getter and setter method
    }你写的那个树要先判断“site”的长度,再进行计算,不好理解。可以写个递归,效率不太清楚。
      

  3.   

    如果site的长度不减少的话, 递归可以允许, 如果遇到site长度突然减小了, 例如 上面的长度是4 , 下面一个是2, 这样递归就不好写了, 请问谁有好的做法, 谢谢