美文网首页
递归思想实现设备树型父子级关系

递归思想实现设备树型父子级关系

作者: 康俊1024 | 来源:发表于2019-04-09 20:52 被阅读0次

问题:

已知设备信息(名称 + 本地编码),通过数据树型结构实现构建父子级关系。如下图


树型结构.png

代码如下:

List<Map<String, String>> list = new ArrayList<Map<String, String>>();      
for (int i = startRow; i <= endRow; i++) {
    Row tempRow = sheetToplogy.getRow(i);
    Map<String, String> map = new HashMap<>();
    this.buildTopologyMap(tempRow, 0, map);
    list.add(map);
}
Map<String, String> topologyMap = new LinkedHashMap<>();
for (int index = 0; index < list.size(); index++) {
    Map<String, String> map = list.get(index);
    String parentSign = this.recursive(list, index, new Integer(map.get("level")));  //递归得到父编码
    topologyMap.put(map.get("sign"), parentSign);                                                //父子对应关系
}
private void buildTopologyMap(Row row, Integer startColumn, Map<String, String> map) throws Exception {
    for (int index = 0; index < 6; index++) {
        Cell cell = row.getCell(startColumn + index); 
        String cellValue = this.getCellStringValue(cell, false);
        if (cellValue != null && !"".equals(cellValue)) {
            map.put("name", cellValue);                               //设备名称
            map.put("level", (index + 1) + "");                       //第几个cell有值
            break;
        }
    }
    Cell cellSign = row.getCell(6);
    String sign = this.getCellStringValue(cellSign, false);
    map.put("sign", sign);                                                           //本地编码
}
private String recursive(List<Map<String, String>> list, int index, Integer level) {
    if (index == -1) {
        return "-1";
    } else {
        Map<String, String> map = list.get(index);
        Integer findLevel = new Integer(map.get("level"));
        if (level == (findLevel + 1)) {                                 //判断条件 当上一个cell有值
            return map.get("sign");
        } else {
            return recursive(list, index - 1, level);
        }
    }
}

相关文章

  • 递归思想实现设备树型父子级关系

    问题: 已知设备信息(名称 + 本地编码),通过数据树型结构实现构建父子级关系。如下图 代码如下:

  • 算法之二叉树

    二叉树之C++实现 创建二叉树 复制二叉树 先序遍历 递归实现 非递归实现 中序遍历 递归实现 非递归实现 后序遍...

  • 树的定义与性质

    1 定义 1.1 树型结构 (1)结点之间有分支(2)具有层次关系 1.2 树的递归嵌套定义 树(tree)是n(...

  • MySQL实现递归查询父子级信息

    最近在工作当中,遇见了有ztree关系的查询: 比如:根据父级的部门ID查询所有的子级部门; 根据父级的区划代码查...

  • 二叉树(一)

    树、二叉树、二叉查找树、平衡二叉树、红黑树、递归树 一、树 树的常用概念节点:树中的每个元素称为节点父子关系:相邻...

  • 递归算法之-斐波那契数列

    递归实现:效率低,容易栈溢出,计算次数成指数型爆炸(二叉树),时间复杂度为O(n^2) 尾递归实现:效率高,时间复...

  • 数据结构之二叉树

    数据结构之二叉树 递归构造二叉树 二叉树节点: 递归构造: 图示: 递归遍历 递归实现先序遍历 图示: 递归实现中...

  • js 总结六 7-18

    递归 递归技巧 假设递归函数已经写好 寻找递推关系 将递推关系的结构转换为递归体 将临界条件加入到递归体中递归思想...

  • 无限级分类

    1.有两种实现方式:a.递归方式,b.迭代方式; a.递归方式:(实现家谱树和子孙树) 家谱树: /** ...

  • 力扣 94 二叉树的中序遍历

    题意:中序遍历树 思路:用stack实现树的中序遍历非递归,具体见代码 思想:树的中序遍历 复杂度:时间O(n),...

网友评论

      本文标题:递归思想实现设备树型父子级关系

      本文链接:https://www.haomeiwen.com/subject/irfwiqtx.html