树形结构

树形结构定义介绍

元气小坏坏 提交于 2020-01-16 19:51:59
B树 B-树就是B树,中间是横线不是减号。B树是一种多路平衡查找树。 B-树(Balance Tree),一个m阶的B树具有如下几个特征: 1.根结点至少有两个子女。 2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m 3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m 4.所有的叶子结点都位于同一层。 5.每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划。 B+ 树 一个m阶的B+树具有如下几个特征: 1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。(中间节点可以存更多元素) 2.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。 3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。 在数据库的聚集索引(Clustered Index)中,叶子节点直接包含卫星数据。在非聚集索引(NonClustered Index)中,叶子节点带有指向卫星数据的指针。 B+树相比B树的优势有三个: IO次数更少,中间节点不存数据可容纳更多元素 查询性能稳定,都需要定位到叶子节点 范围查询简便,叶子节点之间是有序链表 二叉查找树(BST)

Java查询菜单树形结构

我的未来我决定 提交于 2020-01-14 18:02:16
1.创建最简单的菜单数据结构 SET FOREIGN_KEY_CHECKS = 0 ; -- ---------------------------- -- Table structure for t_menu -- ---------------------------- DROP TABLE IF EXISTS ` t_menu ` ; CREATE TABLE ` t_menu ` ( ` id ` int ( 20 ) NOT NULL AUTO_INCREMENT COMMENT '菜单id' , ` name ` varchar ( 255 ) DEFAULT NULL COMMENT '菜单名称' , ` icon ` varchar ( 255 ) DEFAULT NULL COMMENT '图标' , ` path ` varchar ( 255 ) DEFAULT NULL COMMENT '路径' , ` types ` varchar ( 255 ) DEFAULT NULL COMMENT '菜单类型:Folder目录/Link页面' , ` parent_id ` int ( 20 ) DEFAULT NULL COMMENT '父菜单名称' , ` seq ` int ( 10 ) DEFAULT NULL COMMENT '排序' , PRIMARY

表格树形结构

喜夏-厌秋 提交于 2020-01-08 19:52:32
表格树形结构一直很纠结,没有好的处理方式,以前见过table套table的表格tree不过不好看 ztree插件不是树形的; 领导说layui 树形结构,可以参考下。 搜索看了下html结构,是通过margin-left来区分层级的;所有节点都是同级的tr; 通过javascript配合父级菜单的span图标进行控制展开和折叠;折叠式隐藏作为子级的tr;展开是展示; 关键字和参考: table tree http://www.g-tf.cn/lay/treeTable.html https://fly.layui.com/extend/treeTable/ 来源: https://www.cnblogs.com/Tpf386/p/12168347.html

把LIST递归成树形结构

我的未来我决定 提交于 2020-01-07 15:41:47
1.创建类 public class Node { public bool leaf { get; set; } public int FolderID { get; set; } public string iconCls { get; set; } public bool editable { get; set; } public bool expanded { get; set; } public int ParentFolderID { get; set; } public string text { get; set; } public bool InheritPerm { get; set; } //public string CreateDate { get; set; } //public string CreateBy { get; set; } public Node[] children { get; set; } } 2.从数据库获取数据转化成LIST 3.递归构建树形结构 public static string GetTree(List<Node> nodes) { var list = nodes.FindAll(a => a.ParentFolderID == 1);//最顶级的目录 foreach (var node in list) { if

基于递归算法,树形结构数据下业务场景,封装解决方法

南楼画角 提交于 2020-01-04 00:37:20
本文源码: GitHub·点这里 || GitEE·点这里 一、递归算法 1、概念简介 递归算法的核心思想是通过将问题重复分解为同类的或其子问题的方式,从而可以使用统一的解决方式。很多编程语言支持方法或函数自我调用,简单的说,就是在函数或方法体内,自身可以再次调用自身的方法结构。 2、基础案例 这里通过递归的方式,计算阶乘、求和等相关逻辑。 public class Demo01 { public static void main(String[] args) { int result1 = factorial(5); System.out.println(result1); int result2 = sum(100) ; System.out.println(result2); } // 递归阶乘 private static int factorial (int n){ if(n <= 1){ return n ; }else{ return n*factorial(n-1); } } // 递归求和 private static int sum (int f){ if(f <= 1){ return f ; }else{ return f + sum(f-1); } } } 3、注意事项 使用方法 使用递归的时候,要明确业务逻辑可以分解为重复相同的问题

基于递归算法,树形结构数据下业务场景,封装解决方法

こ雲淡風輕ζ 提交于 2020-01-03 09:29:06
本文源码: GitHub·点这里 || GitEE·点这里 一、递归算法 1、概念简介 递归算法的核心思想是通过将问题重复分解为同类的或其子问题的方式,从而可以使用统一的解决方式。很多编程语言支持方法或函数自我调用,简单的说,就是在函数或方法体内,自身可以再次调用自身的方法结构。 2、基础案例 这里通过递归的方式,计算阶乘、求和等相关逻辑。 public class Demo01 { public static void main(String[] args) { int result1 = factorial(5); System.out.println(result1); int result2 = sum(100) ; System.out.println(result2); } // 递归阶乘 private static int factorial (int n){ if(n <= 1){ return n ; }else{ return n*factorial(n-1); } } // 递归求和 private static int sum (int f){ if(f <= 1){ return f ; }else{ return f + sum(f-1); } } } 3、注意事项 使用方法 使用递归的时候,要明确业务逻辑可以分解为重复相同的问题

java ssm使用递归写树形结构

我怕爱的太早我们不能终老 提交于 2020-01-01 15:55:31
实体类: private String dspId; private String parentId; //父类id private String dataName; private Integer sortingNumber; private String remarks; private Date createTime; private Date updateTime; private Date deleteTime; private Integer dataFlag; private Integer anId; private Integer isParent;//是否有父类 private List<DataSpecies> chlidSpecies; dao层和接口使用mybatis逆向生成,这里就不住解释. service层: public List<DataSpecies> findDataspecies() { // TODO Auto-generated method stub //查询所有的结果 DataSpeciesExample example = new DataSpeciesExample(); Criteria criteria = example.createCriteria(); criteria.andDataFlagEqualTo(0);

Mysql树形结构数据Closure Table做树

谁说我不能喝 提交于 2019-12-30 09:43:51
1 新增菜单表 CREATE TABLE `menu` ( `id` int(11) DEFAULT NULL, `name` varchar(100) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 INSERT INTO `menu` VALUES ('1', '1'); INSERT INTO `menu` VALUES ('2', '2'); INSERT INTO `menu` VALUES ('3', '1.1'); INSERT INTO `menu` VALUES ('4', '2.1'); INSERT INTO `menu` VALUES ('5', '1.1.1'); INSERT INTO `menu` VALUES ('6', '1.1.2'); INSERT INTO `menu` VALUES ('7', '2.1.1'); INSERT INTO `menu` VALUES ('8', '2.1.2'); 2 新增菜单组织表 parent_id 父节点 root_id 根节点 depth 距离根节点长度 is_leaf 是否叶子节点 node_id 节点 CREATE TABLE `menu_relation` ( `parent_id` int(11) DEFAULT NULL, `root_id

C++设计模式(17):组合模式

蹲街弑〆低调 提交于 2019-12-28 07:30:29
一、背景 树形结构 不论在生活中或者是开发中都是一种非常常见的结构,一个 容器对象 (如文件夹)下可以存放多种不同的 叶子对象 或者 容器对象 ,容器对象与叶子对象之间属性差别可能非常大。 由于容器对象和叶子对象在功能上的区别,在使用这些对象的代码中必须有区别地对待容器对象和叶子对象,而实际上大多数情况下我们希望一致地处理它们 ,因为对于这些对象的区别对待将会使得程序非常复杂。组合模式为解决此类问题而诞生, 它可以让叶子对象和容器对象的使用具有一致性 。 二、模式定义 组合多个对象形成树形结构以表示具有 “整体—部分” 关系的层次结构。 组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性 ,组合模式又可以称为 “整体—部分”(Part-Whole) 模式,它是一种对象结构型模式。 三、模式角色和UML类图 抽象构建(Component): 它可以是接口或抽象类,为叶子构件和容器构件对象声明接口,在该角色中可以包含所有子类共有行为的声明和实现。在抽象构件中定义了访问及管理它的子构件的方法,如增加子构件、删除子构件、获取子构件等。 叶子节点(Leaf): 它在组合结构中表示叶子节点对象,叶子节点没有子节点,它实现了在抽象构件中定义的行为。 对于那些访问及管理子构件的方法,可以通过异常等方式进行处理 。 容器构件(Composite):

另外一种转换树状结构的方法

∥☆過路亽.° 提交于 2019-12-27 17:58:56
在一些前端开发过程中,我们通常需要将后台查询出来的集合数据进行相应的转换,转成树形结构对象,比如常用的评论区数据就是一种典型的树形结构数据,如下图所示。 而后台服务端传来的数据通常是一种普通的集合(元素中有 id 和 pid ,以此构成 父子节点关系)它们是一种数组集合对象(服务端可能是List集合 ,前端为json对象或json串) <!DOCTYPE html> < html > < head > < meta charset = " utf-8 " > < script lang = " javascript " > var treelist = [ { "CODE" : "6" , "PID" : "0" , "ID" : "6" , "NAME" : "天安门金领总校" } , { "CODE" : "101" , "PID" : "6" , "ID" : "101" , "NAME" : "校办" } , { "CODE" : "102" , "PID" : "6" , "ID" : "102" , "NAME" : "市场部" } , { "CODE" : "103" , "PID" : "6" , "ID" : "103" , "NAME" : "学术部" } , { "CODE" : "104" , "PID" : "6" , "ID" : "104" ,