读书人

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

发布时间: 2012-11-19 10:18:51 作者: rapoo

多叉树解决复杂表头问题
现代化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;
}
}

读书人网 >其他相关

热点推荐