经过递归算法完成树的级联勾选的通常思路

文章版权由做者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/前端

1.背景

在某个项目中,发现当tree上加上checkbox后,初始化该树时会特别慢。现场树上的节点最深有三层,节点个数总和有200多个。经排查,为该tree的参数中开启了级联勾选的参数,致使初始化该树时每初始化一个节点便进行了一次级联判断,如此效率太低致使。算法

如今将级联勾选去除后,涉及到以下几个问题须要解决:后端

初始化时,须要在前端或者后端完成级联勾选逻辑。微信

  1. 手动勾选树上节点后,须要进行级联判断。
  2. 点击父节点时,子节点须要所有选中。
  3. 点击子节点时,须要判断父节点以及父组节点是否均需选中。

2.初始化时的后台级联选择算法

在树的数据初始化从后端读取时,咱们能够首先获取到各子节点的选中状态,所有获取后,对构造出来的树结构进行总体判断是否进行父节点的勾选。其递归算法大体以下:3d

 

3.初始化后前端的级联选择算法(只讨论勾选)

树有两种状态,一种是勾选,一种是去勾选。这里仅仅只考虑勾选的过程。去勾选过程的算法与勾选算法同样。blog

当树初始化完成后,勾选树上任意节点时,须要完成以下两个级联判断:递归

a.若是勾选的为父节点,其全部子节点均需被勾选上,而且其父节点也要作级联判断。get

b.若是勾选的为普通子节点,其父节点要作级联判断。博客

统一块儿来就是,须要作两个级联算法,分别是向上方向判断,和向下方向判断:效率

             

3.1针对父节点的级联算法

 

3.2针对子节点的级联判断

 

4.注意

递归算法中,递归层级(level)参数是个很是重要的参数,在控制操做逻辑上很是有用。

 

       

                                   -----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

                                                                                                       若是您以为本文确实帮助了您,能够微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

                                                  

相关文章
相关标签/搜索