首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

多叉树解决复杂表头有关问题

2012-11-19 
多叉树解决复杂表头问题现代化WEB项目中少不了要用到报表展现.对于中国式报表来说,复杂表头是必不要可少的

多叉树解决复杂表头问题
现代化WEB项目中少不了要用到报表展现.对于中国式报表来说,复杂表头是必不要可少的一种表现形式。

形如下面的表格:

合并四
合并三  合并二
合并一 单元三
单元一  单元二  单元四  单元五

如何通过数据库表示这样一个复杂表头呢?其实他就是一个多叉树.在数据库里表达出一棵树信息

很简单吧.再者就是展现到页面时每一个树结点的Colspan,Rowspan怎么计算呢.Colspan比较简

单就是树的宽度.说白了就是叶结点的个数(因为叶结点的宽度都是1).Rowspan似乎不容易获得.

仔细看的话,你会发现当前结点Rowspan就是父结点为根的子树深度减去自身为根的子树的深度.

这样问题就解决了.

多叉树求树深的算法:

Code
    public static int getTreeDepth(TreeNode root) {
        if (root == null) {
            return 0;
        }
        Iterator<TreeNode> it = root.getChildList().iterator();
        List<Integer> depths = new ArrayList<Integer>();
        while (it.hasNext()) {
            TreeNode node = it.next();
            depths.add(getTreeDepth(node));
        }
        Collections.sort(depths);
        if (depths.isEmpty()) {
            return 1;
        } else {
            return depths.get(depths.size() - 1) + 1;
        }
    }

热点排行