本文主要是介绍数据结构:多叉树的建立,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我有这么个需求,是一张地区表,地区表中包含多层级的地区,如:中国,河北省,邢台市,桥东区。一共有4个层级。数据库字段设计为
id | parentId | name | level |
---|---|---|---|
编号 | 父id | 地区名 | 等级 |
我要讲这些数据转为 有层级关系的json数据:很显然数据的结构是个树,于是就要建立树的结构:
节点 node.class
public class Node{public Map<Integer,Node> childs = new HashMap<>();public String name;public Integer id;public Integer parentId;}
有了节点开始构建树:
如下代码解释,我已经从数据库取到所有数据 attrAreas
进行一个树的构建
public void local(List<ModelAttrArea> attrAreas){//建立根节点Node root=new Node();Map<Integer,Node> maps= new HashMap<>();//遍历所有节点,将节点放入节点map中for(ModelAttrArea temp:attrAreas) {Node node = new Node();node.name = temp.getName();node.id = temp.getID();node.parentId = temp.getParentId();maps.put(temp.getID(),node);}//开始遍历已经放好的map,将没有父节点的节点放倒根目录下,把有父节点的节点,找到父节点,然后给父节点添加子节点。for (Map.Entry<Integer, Node> entry : maps.entrySet()) {Node e=entry.getValue();Integer parentId = e.parentId;if(parentId==null){root.childs.put(e.id, e);}else{Node pnode = maps.get(parentId);pnode.childs.put(e.id,e);}}
}
多叉树构建完毕~~
这篇关于数据结构:多叉树的建立的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!