`

多叉树解决复杂表头问题

阅读更多
现代化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;
        }
    }

分享到:
评论

相关推荐

    导入excel,处理合并表头、复杂表头、多行表头

    1.解决复杂表头的Excel导入。可以解决任何复杂的表头。 2.导入时,显示请稍后。。。提醒框,完毕后会自动隐藏 3.全面扫描Excel数据,将所有异常详细信息写入Excel,返回客户端,提供用户下载。方便修正错误数据。 4....

    easyexcel 动态导出复杂表头.zip

    在实际应用中,你可能会遇到的问题包括如何处理嵌套的表头、如何自适应数据变化调整表头结构,以及如何优化导出性能等。通过对给定的代码进行分析和调试,你可以更深入地了解EasyExcel在处理复杂表头时的具体实现...

    C#导出Excel复杂表头解决方案

    标题"**C#导出Excel复杂表头解决方案**"涉及的是在C#应用程序中如何高效地创建包含复杂结构的Excel表头,这在数据报告、数据分析或自动化办公场景中非常常见。复杂表头可能包括多级标题、合并单元格、自定义样式等。...

    java导出excel复杂表头

    本示例涉及的主题是“java导出excel复杂表头”,这意味着我们要处理的不是简单的单级表头,而是包含多级或者多层次结构的表头。在描述中提到这是一个可以直接运行的Java工程,但需要进一步改造为Web下载服务。 首先...

    转C#DATAGRAIDVIEW复杂表头的做法

    "转C#DATAGRAIDVIEW复杂表头的做法" 本文将详细介绍如何实现C# DATAGRAIDVIEW 复杂表头的做法。DATAGRAIDVIEW是Windows Forms的一种控件,用于显示和编辑tablular数据,但是其默认的表头样式有限制,无法满足一些...

    复杂JTable(复杂表头、跨行列表体)

    在一些复杂的应用场景中,我们可能需要实现更高级的功能,如复杂的表头和跨行列表体。这个主题主要关注如何利用`JTable`实现这些特性。 **1. 复杂表头** 复杂表头指的是具有多级或者分组的表头,这在处理具有层次...

    layui js 动态加载数据 复杂表头多表头实例.pdf

    Layui JS动态加载数据复杂表头多表头实例 Layui 是一个流行的前端框架,它提供了许多实用的组件和功能,其中表格组件是其中一个非常重要的组件。然而,在实际开发中,遇到复杂表头的需求是非常常见的,例如多表头、...

    qt 表格多行表头,复杂表头

    然而,有时候我们需要创建更复杂的表格布局,比如带有多行表头的表格。标题"qt 表格多行表头,复杂表头"正是指向这样一个需求。在描述中提到的“占用两行数据,利用合并表格功能实现多行表头”是实现这一功能的一种...

    复杂表头固定表头和列.html

    复杂表头固定行,固定列,纯css实现,样式可修改,可根据自己要求,更改表头,以及固定列的数量,本人亲测,确实好用

    Excel操作,读取及汇出,复杂表头,可以设置表头样式

    Excel操作,读取及汇出,复杂表头,可以设置表头样式

    DataGrid 复杂表头

    然而,有时我们需要展示更复杂的数据结构,这时就需要利用到“复杂表头”。本主题将深入探讨如何在WPF中创建和自定义DataGrid的复杂表头,以显示多层次的表头信息。 ### 1. 数据网格概述 WPF的DataGrid控件源自...

    EXT 复杂表头插件

    在EXT Grid中,表头(Header)是显示列标题的部分,而“复杂表头”则是指具有多层次、多维度展示数据的表头,可以更直观地组织和显示复杂的数据关系。 "EXT 复杂表头插件"是为了扩展EXT Grid的功能,使其能够支持...

    QTableWidget QTableView 自定义复杂表头(多行表头,表头合并) 、冻结、固定特定的行

    今天我们将深入探讨如何实现标题中提及的几个关键功能:自定义复杂表头(包括多行表头和表头合并)、冻结或固定特定行。 首先,让我们从`QTableWidget`开始。`QTableWidget` 是一个即用型的表格控件,提供了完整的...

    Table表复杂表头.zip

    在前端开发中,有时我们需要处理含有复杂表头的表格,比如多级表头、可滚动的表头等,这些在数据分析或展示时非常常见。"Table表复杂表头.zip"这个压缩包文件显然包含了用于实现这种功能的资源,可能是HTML、CSS和...

    QTableView QTableWidget 复杂表头(多行表头) 、冻结、固定特定的行

    QT QTableView QTableWidget 复杂表头(多行表头) 、(冻结、固定特定的行),具体效果看博客: https://blog.csdn.net/xiezhongyuan07/article/details/82857631

    netbeans jtable 复杂表头的实现方法

    当我们需要创建具有复杂结构的表头,比如多级或合并的表头时,这通常涉及到自定义`JTableHeader`和使用`DefaultTableCellRenderer`。NetBeans IDE提供了便捷的方式来帮助开发者实现这些功能。本篇文章将详细介绍如何...

    cognos中国式复杂表头的制作(图列示范)

    中国式复杂表头通常涉及到多级分类和交叉分组,这在传统的表格布局中可能会显得较为复杂。下面我们将详细探讨如何在 Cognos ReportNet 中制作这样的表头。 首先,我们从创建列表开始。在 ReportNet Studio 中,选择...

    kendo ui 实现复杂表头

    该代码类里面实现的主要操作: 1.ajax 访问后代接口,并将结果返回值绑定到kendo ui 的grid上。 2. 实现复杂的kendo ui 的grid的表头设置,这个是本人亲自写的,并且经过验证是正确的

    EXT复杂表头+锁定列例子

    在IT行业中,尤其是在前端开发领域,创建具有复杂表头和锁定列的数据展示表格是一个常见的需求。这通常涉及到数据量较大,需要对数据进行多维度分析的情况。标题“EXT复杂表头+锁定列例子”提示我们这里将探讨EXT库...

    html table实现复杂表头的示例代码

    使用html做复杂的表格。复杂表格一般是用到td的两个属性:rowspan 、colspan属性值。 ...  (1)rowspan 属性规定单元格可横跨...多表头表格&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;table id="tab" cellpadding="1

Global site tag (gtag.js) - Google Analytics