程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 通過遞歸算法完成樹的級聯勾選的一般思路,遞歸算法

通過遞歸算法完成樹的級聯勾選的一般思路,遞歸算法

編輯:JAVA綜合教程

通過遞歸算法完成樹的級聯勾選的一般思路,遞歸算法


文章版權由作者李曉晖和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/

1.背景

在某個項目中,發現當tree上加上checkbox後,初始化該樹時會特別慢。現場樹上的節點最深有三層,節點個數總和有200多個。經排查,為該tree的參數中開啟了級聯勾選的參數,導致初始化該樹時每初始化一個節點便進行了一次級聯判斷,如此效率過低導致。

現在將級聯勾選去除後,涉及到如下幾個問題需要解決:

初始化時,需要在前端或者後端完成級聯勾選邏輯。

2.初始化時的後台級聯選擇算法

在樹的數據初始化從後端讀取時,我們可以首先獲取到各子節點的選中狀態,全部獲取後,對構造出來的樹結構進行整體判斷是否進行父節點的勾選。其遞歸算法大致如下:

 

3.初始化後前端的級聯選擇算法(只討論勾選)

樹有兩種狀態,一種是勾選,一種是去勾選。這裡僅僅只考慮勾選的過程。去勾選過程的算法與勾選算法一樣。

當樹初始化完成後,勾選樹上任意節點時,需要完成如下兩個級聯判斷:

a.如果勾選的為父節點,其所有子節點均需被勾選上,並且其父節點也要做級聯判斷。

b.如果勾選的為普通子節點,其父節點要做級聯判斷。

統一起來就是,需要做兩個級聯算法,分別是向上方向判斷,和向下方向判斷:

             

3.1針對父節點的級聯算法

 

3.2針對子節點的級聯判斷

 

4.注意

遞歸算法中,遞歸層級(level)參數是個非常重要的參數,在控制操作邏輯上非常有用。

 

       

                                  -----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved