如何生成多叉树,以构建树形结构需要的数据

public void getTreeNodes()
{
try {
List<TreeNode> list = mapper.getTreeNodes(); //从数据库中获取数据,数据中的节点以ID正序排列
TreeNode root = list.get(0);//取出根节点
if(root.getUrl()!=null && !root.getUrl().equals(""))
{
root.getAttributes().append("url", root.getUrl());
}
list.remove(0);

for(TreeNode tn:list)
{
if(tn.getUrl()!=null && !tn.getUrl().equals(""))
{
tn.getAttributes().append("url", tn.getUrl());
}
if(tn.getPid()!=null){
tn.getAttributes().append("pid", tn.getPid());
}
if(tn.getBtns()!=null)
{
tn.getAttributes().append("btns", tn.getBtns());
}
if(root.getId()==tn.getPid())
{
if(root.getChildren()==null)
{
root.setChildren(new ArrayList<TreeNode>());
}
root.getChildren().add(tn);
}
else
{
if(root.getChildren().size()>0)
{
addChildren(root,tn);
}
}
}
this.outJson(root);
} catch (Exception e) {
e.printStackTrace();
}

}

//递归对list遍历,为各个节点找子节点

public static void addChildren(TreeNode root,TreeNode node)
{

//前提,root的child个数大于1
for(TreeNode tn:root.getChildren())
{
if(tn.getUrl()!=null && !tn.getUrl().equals(""))
{
tn.getAttributes().append("url", tn.getUrl());
}
if(tn.getId()!=null&&!tn.getPid().equals("")){
tn.getAttributes().append("pid", tn.getPid());
}
if(tn.getBtns()!=null&&!tn.getBtns().equals(""))
{
tn.getAttributes().append("btns", tn.getBtns());
}

if(tn.getId()==node.getPid())
{
if(tn.getChildren()==null)
{
tn.setChildren(new ArrayList<TreeNode>());
}
tn.getChildren().add(node);
}
else
{
if(tn.getChildren()!=null&&tn.getChildren().size()>0)
{
addChildren(tn,node);
}
}
}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值