首页 > 其他分享 >项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别

时间:2023-03-31 22:01:04浏览次数:44  
标签:复杂度 嵌套循环 树形 结构 null 节点 页面


树形结构开发]菜单维护

文章目录

  • 树形结构开发]菜单维护
  • 01-菜单维护-树形结构基础知识-上
  • ==在数据库中怎么去表示树形关系==
  • ==其实这就是自关联==
  • ==我们怎么识别根节点==
  • 02-菜单维护-树形结构基础知识-下
  • 03-页面显示树形结构-后端-逆向工程
  • ==开发的细节:如何避免空指针异常:初始化==
  • 04-后端-handler方法中组装-未改进(页面显示树形结构)
  • 05-后端-handler方法中组装-改进后(页面显示树形结构)
  • 如果可以尽量不要嵌套循环
  • ==时间复杂度和空间复杂度的区别==
  • 注意事项,这个不仅仅是需要代码知识也很需要数据库知识,假如数据库有问题,代码是不行的
  • ==根节点的是没有pid的根节点的pid必为null,连0都不行/如果非要用0代替null那么0也是不存在的数据才行,总之根节点是没有父的,它就是天,并并且必须要有一个根节点==
  • 06-页面显示树形结构-过渡-跳转到menu-page页面
  • ==下面我们跑起来试试看==
  • 跳转页面
  • 07-页面显示树形结构-前端-参考demo用假数据显示
  • zTree的使用
  • 08-页面显示树形结构-前端-使用真实数据(下一篇)
  • 09-准备zTree的API文档
  • 10-前端-显示图标-分析思路(-页面显示树形结构)
  • 11-前端-显示图标-代码实现(-页面显示树形结构)

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构

01-菜单维护-树形结构基础知识-上

需要需要熟悉节点的类型,心里要有东西,才能做到胸有成竹

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_java_02


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_03


为什么我们要约定整个树形结构的节点层次最多只能有3层,原因是超过3层就非常复杂了,我们这里暂时不考虑过于复杂的层次结构

在数据库中怎么去表示树形关系

我们知道,在数据库中只能是一列一列的数据,那么怎么去表示树形关系呢

找到这个sql文件,我们看看建表语句

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_04

create table t_menu
(
   id                   int(11) not null auto_increment,
   pid                  int(11),
   name                 varchar(255),
   icon                 varchar(255),
   url                  varchar(255),
   primary key (id)
);

alter table t_menu comment '菜单表';

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_05


数据都可以在这个文件中找到,我们插入数据

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_06


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_07


根据我们的观察可以得知根节点可以是null也可以是0,即用null和0表示根节点都是可以的

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_java_08


父节点是0 也可以表示该菜单 是根节点

父节点是null也可以表示该菜单 是根节点如下,只是两种写法而已,思路是一模一样的

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_09


id表示的是这条数据本身的id ,pid表示的是父节点的id

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_10


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_11

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_12


分析上图,我们看出,用户维护、角色维护、菜单维护,他们的父节点都是3,都是权限管理

这样是不是就慢慢可以理解他们之间那层关系了子节点通过pid字段关联到父节点的id字段,建立父子关系。

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_13

其实这就是自关联

我们怎么识别根节点

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_14


根节点是没有父节点的,他就像是 天地初开 鸿蒙伊始的盘古,只有后代子孙,没有祖宗,它就是祖宗,

没有父节点的就是祖宗,没有父节点的父节点可以用null(或者0)表示

02-菜单维护-树形结构基础知识-下

数据库里面弄清楚了之后,下一步就是我们怎么在页面去显示出来

因为光数据库里面有也没有用,怎么使用java结合前端知识,把数据展示出来呢

下面我们来看

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_15


上面说的是后端,前端我们直接用用一个插件来生成即可

实际上就非常简单了

这个插件名叫做 zTree,也是基于jquery的

我们后端只需要传给Ztree即可至于传哪些参数,我们可以看zTree的官方文档

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_16


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_java_17


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_18

03-页面显示树形结构-后端-逆向工程

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_java_19


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_20


建表这块,不说了直接找到数据库文件,执行好表即可(注意表和数据都要) ==
然后我们这里直接就可以
执行逆向工程==了

注意,就是这张表,注意执行的逆向工程的时候,如下表名和类名不要写错

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_21


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_22


选择这个是直接执行上一次的,我们这里选择这个就好

我们之前说过,还有两个附加的属性要加上,所以如下我们在实体里面加上

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_23


除了要给这两个新加的属性添加get、set方法外,我们特别要注意,还需要初始化一下这个

开发的细节:如何避免空指针异常:初始化

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_java_24


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_25


每一个属性,都加一下注释

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_26


然后构造器、get、set以及toString方法自己加一下注意是把实体的附加属性弄好了之后再去各就各位

下面就是service和handler

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_27


使用@Autowired 装配一下 MenuMapper,到时候好层层调用

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_28


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_29


这样架子先搭好,再来进行下一步

04-后端-handler方法中组装-未改进(页面显示树形结构)

service接口

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_30


service实现类

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_31


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_java_32


控制器

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_33


检查pid是否为null,有些数据库设计的时候父节点是0,

pid是null或者0就是根节点,这个要根据具体情况来,具体情况具体分析

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_34


父节点可以有多个子节点,子节点只能有1个父节点

05-后端-handler方法中组装-改进后(页面显示树形结构)

改进一下,上面的写法不能说错,只是还不够好

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_35


如果嵌套的循环能够改成不嵌套的循环,我们要尽量避免嵌套的循环

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_java_36


极端情况下,如果循环的次数非常多,由于嵌套循环是外层循环和内层循环相乘,所以是对资源极大的浪费

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_37


1000000000

20000

差别巨大

所以我们只要改成不嵌套就行了

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_38


之所以之前嵌套,是找父节点的时候嵌套的

如果可以尽量不要嵌套循环

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_39


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_40


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_java_41


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_java_42


上面我们将双循环/循环嵌套 改成了单循环/普通循环 ,优化的是时间复杂度

时间复杂度和空间复杂度的区别

时间复杂度解决同一个问题,谁运算的次数多,谁运算的次数少,肯定是越少越好
运行次数多的就时间复杂度高,运算次数少的就时间复杂度低,同理,时间复杂度也是越低越好
空间复杂度占用内存的大小,一个算法执行完毕肯定占用内存越少越好,也就是说空间复杂度也是越低越好

如果时间复杂度低,空间复杂度也低,那么这个算法就刘无限牛逼了这个是数据结构相关的知识

注意事项,这个不仅仅是需要代码知识也很需要数据库知识,假如数据库有问题,代码是不行的

上面的代码必须要,保证数据库里面的数据之间是有关联关系的

因为我自己测试不成功所以改了一下

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_43

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_java_44


这样上面的代码就生效了

所以,由此我们可以得出根节点的是没有pid的

根节点的是没有pid的根节点的pid必为null,连0都不行/如果非要用0代替null那么0也是不存在的数据才行,总之根节点是没有父的,它就是天,并并且必须要有一个根节点

我改了数据库的内容之后,他们就能够很好的关联起来了

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_45


最后推荐是用这个算法,不要搞错了

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_46


小结:zTree,树形开发结构开发,首先要数据库的数据没问题,才能使用java算法把结构理清楚,一句话首先要数据没问题

06-页面显示树形结构-过渡-跳转到menu-page页面

下面我们跑起来试试看

这里 老师讲解的时候用的是火狐浏览器,他主要是为了看JSON,火狐浏览器对JSON自带解析

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_47


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_48


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_49

跳转页面

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_50


没有这个menu-page页面的话,我们就新建一个

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_51


打开前端页面

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_52


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_53

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_54


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_55


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_56

07-页面显示树形结构-前端-参考demo用假数据显示

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_57

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_58


所以我们也要引入zTree的环境

zTree的使用

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_java_59


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_60


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_61


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_62


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_java_63


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_64

其实zTree功能非常丰富 但是弱水三千,我只取一瓢,我们只要能够满足我们的部分就可以了

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_java_65


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_66


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_67


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_68

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_69


先看看有没有所谓的"假数据"页面

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_70


我们的代码里面也要有 treeDemo其它的就删掉,会动态生成

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_java_71


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_72


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_树形结构_73


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_74


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_75

测试一下:

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_父节点_76


项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_77

项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和使用、如果可以尽量不要嵌套循环、时间复杂度和空间复杂度的区别_数据库_78

08-页面显示树形结构-前端-使用真实数据(下一篇)

09-准备zTree的API文档

10-前端-显示图标-分析思路(-页面显示树形结构)

11-前端-显示图标-代码实现(-页面显示树形结构)


标签:复杂度,嵌套循环,树形,结构,null,节点,页面
From: https://blog.51cto.com/u_15800767/6162565

相关文章

  • 【做题笔记】树形 dp
    1.luoguP2016战略游戏1.1Solve设计状态\(dp[i][0/1]\)表示在\(i\)子树内,放/不放第\(i\)个节点使其合法所需的最少的士兵数目。则有:不选\(i\)节点,则\(i\)的儿子必须选;选\(i\)节点,则\(i\)的儿子可选可不选;因此,转移方程为:$dp[i][0]=\sumdp[son[i]][1......
  • jquery之ztree树入门(输出最简单树形)
      <scripttype="text/javascript"src="js/jquery-1.4.4.min.js"></script><scripttype="text/javascript"src="js/jquery.ztree.core-3.5.js"></script><scrip......
  • 递归问题 的时间复杂度
    gong公式:T(N)=a*T(N/b)+O(N^d)其中(abd都是常数) N:入参,输入集合a:调用子函数的次数b:调用子函数的规模d:除子递归外的常数操作,没有为0,如果有N次为1如果有N^2次为2......
  • js树形控件—zTree使用
    https://blog.csdn.net/qq_35934094/article/details/80852989https://www.cnblogs.com/leechenxiang/p/5952959.htmlhttps://www.jianshu.com/p/99d24aab74a5详见官网:h......
  • 最小树形图
    最小树形图求最短弧集合\(E\)找到每个\(u\)点的最小入边\(in[u]\),如果存在非根节点没有入边,则一定不存在树形图for(riinti=1;i<=m;++i){if(e[i].u^e[i].v......
  • 将一个多维数组整合成树形结构,可以通过递归函数来实现
    functionbuildTree(arr,parentId=null){lettree=[];for(leti=0;i<arr.length;i++){letitem=arr[i];if(item.parentId===parentId......
  • 阶乘求和 0!+1!+2!+3!+4!+5!+... O(n) 复杂度
    n次循环以n=4为例利用n!+(n-1)!=(n+1)x(n-1)! 4!+3!+2!+1!+0!=(4+1)x3!+2!+1!+0!=((4+1)x3+1)x2!+1!+0!=(((4+1)x3......
  • 【数据结构基础1】时间复杂度和空间复杂度
    【数据结构基础】时间复杂度和空间复杂度算法的时间复杂度和空间复杂度【本节目标】1.算法效率2.时间复杂度3.空间复杂度4.常见时间复杂度以及复杂度oj练习数据结构指的是“......
  • Gorm 实现无限树形菜单
    原文链接:https://www.zhoubotong.site/post/91.html通常树形菜单的实现基本就是递归调用,大部分场景毕竟这种数据不多,性能倒是并不突出,下面给个demo,有兴趣的朋友可以看......
  • 树形表的标记字段是什么?如何查询树形表?
    树形表的标记字段是什么是parentID即父节点的id如何查询树形表当层级固定的时候可以用表的自连接查询select one.idone_id, one.labelone_label, two.idtwo_i......