欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

有序樹表分段遍歷方法以及軟件處理系統(tǒng)的制作方法

文檔序號:6603280閱讀:159來源:國知局
專利名稱:有序樹表分段遍歷方法以及軟件處理系統(tǒng)的制作方法
技術領域
本發(fā)明涉及網絡操作系統(tǒng),尤其涉及網絡操作系統(tǒng)中有序樹表分段遍歷技術。
背景技術
軟件系統(tǒng)中,通常用樹表來保存大量數據。為了樹表維護、查找方便,通常使用有序樹表。在處理存儲大量數據的有序樹表時,為了保證樹表數據本身能夠及時更新、刪除, 以及避免遍歷操作長時間獨占CPU,一般有分段遍歷樹表的需求。分段遍歷需要記錄斷點鍵值,一般斷點為上一段遍歷的結束節(jié)點或者結束節(jié)點的后序節(jié)點,作為獲取下一段遍歷起始點的依據。且樹表節(jié)點在被刪除時需要及時失效并從樹表移除時,若被移除的節(jié)點恰好是分段遍歷記錄的斷點,將導致無法直接獲取下段遍歷的起始點。若分段遍歷過程中,斷點被刪除,則常見方案是根據遍歷來獲取起始點,遍歷是一種方法,但性能低。通過額外的控制邏輯也可實現,但這些邏輯的實現,增加了軟件復雜度。 以平衡二叉樹為例,假設存在平衡二叉樹如下圖1所示,以中根遍歷的方式進行,遍歷的順序應為 a- > b- > C- > d- > e- > f- > g- > h- > i 步驟一分段遍歷,第一段遍歷首先遍歷前5個節(jié)點a- > b- > C- > d- > e ;步驟二 記錄下次遍歷起始節(jié)點,即f節(jié)點的鍵值;a、b、C、d、e節(jié)點都為f節(jié)點的前序節(jié)點;之后的g、h、i節(jié)點均為其后序節(jié)點;如第一段遍歷結束和第二段遍歷開始之間,記錄的斷點即f節(jié)點被刪除。新的平衡二叉樹如圖2所示。步驟三因為f節(jié)點已刪除,使用標準查找法,查找記錄的f節(jié)點鍵值將會失敗。 再通過遍歷方法,則需要遍歷a_ > b- > C- > d- > e- > g才能重新確定第二段遍歷起始節(jié)點為g節(jié)點。使用引用計數技術保證斷點不被刪除也是一種常見方案,但某些時候,節(jié)點需要及時失效,若其不被刪除,則需要特定狀態(tài)標識,而針對特定狀態(tài)的處理需要額外的投入。 例如通過拷貝斷點,并在節(jié)點刪除時,檢查斷點與被刪除節(jié)點的關系,被刪除節(jié)點是斷點 (斷點為下一段的起始點)或斷點(斷點為上一段的結束點)的下一個節(jié)點時,都需要更新記錄點。類似這樣的方案都需要在樹表操作過程中添加特定的控制邏輯,增加了軟件復雜度。

發(fā)明內容
本發(fā)明提供一種在斷點被刪除的情況下,遍歷時間復雜度更低的有序樹表分段遍歷方法,以及實現該方法的軟件處理系統(tǒng)。有序樹表分段遍歷方法,每段遍歷結束時記錄斷點鍵值,根據記錄的鍵值查找斷點,查找斷點成功,當斷點是上一段遍歷的結束節(jié)點時,則將返回節(jié)點的后序節(jié)點作為下一段遍歷的起始節(jié)點,當斷點是上一段遍歷的結束節(jié)點的后序節(jié)點時,則將返回節(jié)點作為下一段遍歷的起始節(jié)點;查找斷點失敗,則將返回的節(jié)點作為下一段遍歷起始節(jié)點;開始下
4一段遍歷。具體的,根據記錄的鍵值查找斷點的方法是,若查找成功,則返回和鍵值匹配的節(jié)點;否則,則返回和鍵值匹配的節(jié)點的后序節(jié)點??蛇x的,當斷點是上一段遍歷的結束節(jié)點時,具體包括以下步驟a、下一段遍歷開始時,根據記錄的斷點鍵值查找斷點,判斷查找是否成功,如是, 進入步驟b ;如否,進入步驟c ;b、查找成功,返回和鍵值匹配的節(jié)點即斷點,取該斷點的后序節(jié)點作為起始節(jié)點并開始下一段遍歷;C、查找失敗,說明上一段遍歷結束斷點已被刪除,返回的節(jié)點為斷點的后序節(jié)點, 取該返回節(jié)點作為起始節(jié)點并開始下一段遍歷??蛇x的,當斷點是上一段遍歷的結束節(jié)點的后序節(jié)點時,具體包括以下步驟a、新一輪分段遍歷開始時,根據記錄的斷點鍵值查找斷點,判斷查找是否成功,如是,進入步驟b ;如否,進入步驟c ;b、查找成功,返回的節(jié)點為上輪遍歷結束節(jié)點的后序節(jié)點即斷點,取該返回的節(jié)點作為起始節(jié)點并開始下一段遍歷;C、查找失敗,說明記錄的斷點已被刪除,返回節(jié)點為被刪除節(jié)點的后序節(jié)點,取該返回的節(jié)點作為起始節(jié)點并開始下一段遍歷。軟件處理系統(tǒng),包括樹表存儲區(qū)、節(jié)點寄存器、節(jié)點查找模塊、遍歷模塊;其特征在于,樹表存儲區(qū)用于,保存樹表數據;節(jié)點寄存器用于,保存用來確定當前分段遍歷起始節(jié)點的斷點鍵值;節(jié)點查找模塊用于,在樹表存儲區(qū)中,根據節(jié)點寄存器保存的斷點鍵值查找斷點; 查找成功時,返回斷點;查找失敗時,返回斷點的后序節(jié)點;遍歷模塊用于,在樹表存儲區(qū)進行遍歷。具體的,節(jié)點查找模塊還用于查找斷點成功,當斷點是上一段遍歷的結束節(jié)點時,將返回節(jié)點的后序節(jié)點作為下一段遍歷的起始節(jié)點,當斷點是上一段遍歷的結束節(jié)點的后序節(jié)點時,將返回節(jié)點作為下一段遍歷的起始節(jié)點。本發(fā)明的有益效果是,當樹表含有大量節(jié)點并需要分段遍歷時,本發(fā)明極大提高斷點刪除情況下的處理效率,且不增加軟件復雜度。


圖1為軟件處理系統(tǒng)示意圖;圖2為平衡二叉樹示意圖;圖3為在圖2的基礎上刪除斷點后的平衡二叉樹示意圖。
具體實施例方式如圖1所示,軟件處理系統(tǒng)包括樹表存儲區(qū)、節(jié)點寄存器、節(jié)點查找模塊、遍歷模塊;樹表存儲區(qū)用于,保存樹表數據;
節(jié)點寄存器用于,保存用來確定當前分段遍歷起始節(jié)點的斷點鍵值;節(jié)點查找模塊用于,在樹表存儲區(qū)中,根據節(jié)點寄存器保存的斷點鍵值查找斷點; 查找成功時,返回斷點;查找失敗時,返回斷點的后序節(jié)點;遍歷模塊用于,在樹表存儲區(qū)進行遍歷。具體的,節(jié)點查找模塊用于查找斷點成功,當斷點是上一段遍歷的結束節(jié)點時, 將返回節(jié)點的后序節(jié)點作為下一段遍歷的起始節(jié)點,當斷點是上一段遍歷的結束節(jié)點的后序節(jié)點時,將返回節(jié)點作為下一段遍歷的起始節(jié)點。用來確定當前分段遍歷起始節(jié)點的節(jié)點為斷點。斷點可以是上一段分段遍歷結束點或當前分段遍歷起始節(jié)點。節(jié)點查找模塊查找用于確定下一段分段遍歷起始節(jié)點的斷點的方法是,從該斷點的鄰近前序節(jié)點開始查找,查找到該斷點,則認為查找成功;當已查找到該斷點的后序節(jié)點,都還未查找到該斷點,則認為查找失敗。實施例仍以圖1所示平衡二叉樹為例,分兩段對該平衡二叉樹進行遍歷步驟一遍歷模塊進行第一段遍歷,首先遍歷前5個節(jié)點a- > b- > C- > d- > e ;步驟二 遍歷模塊將第一段遍歷的結束節(jié)點的后序節(jié)點(斷點)發(fā)送至節(jié)點寄存器保存,即保存f節(jié)點的鍵值;步驟三(斷點未被刪除)在第二段遍歷開始之前,如沒有發(fā)生斷點被刪除,節(jié)點查找模塊從f節(jié)點的鄰近前序節(jié)點開始查找;鄰近前序節(jié)點可以是第二鄰近前序節(jié)點,即d 節(jié)點,從d節(jié)點開始查找d- > e- > f, f節(jié)點查找成功,返回f節(jié)點至節(jié)點寄存器保存,遍歷模塊從節(jié)點寄存器提取f節(jié)點作為第二段遍歷起始節(jié)點,進行第二段遍歷,遍歷的節(jié)點順序為f_ > g_ > h- > i ;步驟三(斷點被刪除)如第一段遍歷結束和第二段遍歷開始之間,斷點被刪除。 在第二段遍歷開始之前,節(jié)點查找模塊從f節(jié)點開始查找d- > g- > e,f節(jié)點應為e節(jié)點的右子節(jié)點,當以查找到f節(jié)點的后序節(jié)點時,f節(jié)點還未被查找到,則認為f節(jié)點查找失敗,則將g節(jié)點作為第二段遍歷的起始節(jié)點,返回g節(jié)點,遍歷模塊將g節(jié)點作為第二段遍歷起始節(jié)點開始進行第二段遍歷,遍歷的節(jié)點順序為:g_ > h- > i。本發(fā)明僅以上一段遍歷的結束節(jié)點的后序節(jié)點作為斷點舉例說明本發(fā)明方案,據此很容易想到以上一段遍歷的結束節(jié)點作為斷點的實施方案,再次不在贅述。因為f節(jié)點已刪除,若使用現有的標準查找算法,通過記錄的f節(jié)點鍵值查找將會失敗。再通過遍歷方法,則需要遍歷a_ > b_ > C- > d- > e_ > g才能確定第二段遍歷的起始節(jié)點g節(jié)點。對于含η個節(jié)點的二叉樹,其時間復雜度為0(η),η表示樹表中的節(jié)點總數。若本發(fā)明算法,則通過查找d- > g- > e節(jié)點即可確認f節(jié)點已不存在,查找失敗,同時返回后序節(jié)點g,g節(jié)點即為二次遍歷的起始點。即,才用本發(fā)明的遍歷方法,假設 NhNh表示深度為h的平衡樹中含有的最少節(jié)點數,顯然NqNq = 0,N1N1 = 1,N2N2 = 2,且NhNh = NhNh-JNh-Jl。這個關系同斐波那契序列。利用歸納法可證明當h彡彡0時,彡Nh =
/Th+2h+2
Fh+2-lFh+2-l,而 Fh+2-lFh 約等于一其中識=),則 NhNh 約等于 ^^ 反之,含有η個節(jié)點的平衡樹的最大深度為l0g/V^(n+l) -2)log (V5(n+1) _2)。因此,在平衡樹上進行查找的時間復雜度為O(Iogn),采用本發(fā)明遍歷方法的時間復雜度大大降低。
權利要求
1.有序樹表分段遍歷方法,每段遍歷結束時記錄斷點鍵值,其特征在于,根據記錄的鍵值查找斷點,查找斷點成功,當斷點是上一段遍歷的結束節(jié)點時,則將返回節(jié)點的后序節(jié)點作為下一段遍歷的起始節(jié)點,當斷點是上一段遍歷的結束節(jié)點的后序節(jié)點時,則將返回節(jié)點作為下一段遍歷的起始節(jié)點;查找斷點失敗,則將返回的節(jié)點作為下一段遍歷起始節(jié)點; 開始下一段遍歷。
2.如權利要求1所述有序樹表分段遍歷方法,其特征在于,根據記錄的鍵值查找斷點的方法是,若查找成功,則返回和鍵值匹配的節(jié)點;否則,則返回和鍵值匹配的節(jié)點的后序節(jié)點。
3.如權利要求2所述有序樹表分段遍歷方法,其特征在于,根據記錄的鍵值查找斷點的方法是,從該斷點的鄰近前序節(jié)點開始查找,查找到該斷點,則認為查找成功;當已查找到該斷點的后序節(jié)點,都還未查找到該斷點,則認為查找失敗。
4.如權利要求1-3任一項所述有序樹表分段遍歷方法,其特征在于,當斷點是上一段遍歷的結束節(jié)點時,具體包括以下步驟a、下一段遍歷開始時,根據記錄的斷點鍵值查找斷點,判斷查找是否成功,如是,進入步驟b ;如否,進入步驟c ;b、查找成功,返回和鍵值匹配的節(jié)點即斷點,取該斷點的后序節(jié)點作為起始節(jié)點并開始下一段遍歷;C、查找失敗,說明上一段遍歷結束斷點已被刪除,返回的節(jié)點為斷點的后序節(jié)點,取該返回節(jié)點作為起始節(jié)點并開始下一段遍歷。
5.如權利要求1-3任一項所述有序樹表分段遍歷方法,其特征在于,當斷點是上一段遍歷的結束節(jié)點的后序節(jié)點時,具體包括以下步驟a、新一輪分段遍歷開始時,根據記錄的斷點鍵值查找斷點,判斷查找是否成功,如是, 進入步驟b ;如否,進入步驟c ;b、查找成功,返回的節(jié)點為上輪遍歷結束節(jié)點的后序節(jié)點即斷點,取該返回的節(jié)點作為起始節(jié)點并開始下一段遍歷;C、查找失敗,說明記錄的斷點已被刪除,返回節(jié)點為被刪除節(jié)點的后序節(jié)點,取該返回的節(jié)點作為起始節(jié)點并開始下一段遍歷。
6.軟件處理系統(tǒng),包括樹表存儲區(qū)、節(jié)點寄存器、節(jié)點查找模塊、遍歷模塊;其特征在于,樹表存儲區(qū)用于,保存樹表數據;節(jié)點寄存器用于,保存用來確定當前分段遍歷起始節(jié)點的斷點鍵值; 節(jié)點查找模塊用于,在樹表存儲區(qū)中,根據節(jié)點寄存器保存的斷點鍵值查找斷點;查找成功時,返回斷點;查找失敗時,返回斷點的后序節(jié)點; 遍歷模塊用于,在樹表存儲區(qū)進行遍歷。
7.如權利要求6所述軟件處理系統(tǒng),其特征在于,節(jié)點查找模塊還用于.查找斷點成功,當斷點是上一段遍歷的結束節(jié)點時,將返回節(jié)點的后序節(jié)點作為下一段遍歷的起始節(jié)點,當斷點是上一段遍歷的結束節(jié)點的后序節(jié)點時,將返回節(jié)點作為下一段遍歷的起始節(jié)點ο
8.如權利要求7所述軟件處理系統(tǒng),其特征在于,節(jié)點查找模塊還用于,根據記錄的鍵值查找斷點,從該斷點的鄰近前序節(jié)點開始查找,查找到該斷點,則認為查找成功;當已查找到該斷點的后序節(jié)點,都還未查找到該斷點,則認為查找失敗。
全文摘要
本發(fā)明提供一種在斷點被刪除的情況下,遍歷時間復雜度更低的有序樹表分段遍歷方法,以及實現該方法的軟件處理系統(tǒng)。有序樹表分段遍歷方法,每段遍歷結束時記錄斷點鍵值,根據記錄的鍵值查找斷點,查找斷點成功,當斷點是上一段遍歷的結束節(jié)點時,則將返回節(jié)點的后序節(jié)點作為下一段遍歷的起始節(jié)點,當斷點是上一段遍歷的結束節(jié)點的后序節(jié)點時,則將返回節(jié)點作為下一段遍歷的起始節(jié)點;查找斷點失敗,則將返回的節(jié)點作為下一段遍歷起始節(jié)點;開始下一段遍歷。當樹表含有大量節(jié)點并需要分段遍歷時,本發(fā)明極大提高斷點刪除情況下的處理效率,且不增加軟件復雜度。
文檔編號G06F9/44GK102262526SQ20101018728
公開日2011年11月30日 申請日期2010年5月31日 優(yōu)先權日2010年5月31日
發(fā)明者尹茂, 羅向征, 舒弋 申請人:邁普通信技術股份有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
林甸县| 扶绥县| 张家港市| 本溪| 旺苍县| 玉山县| 宝山区| 临颍县| 台前县| 弋阳县| 新兴县| 太白县| 陈巴尔虎旗| 德江县| 瓦房店市| 徐闻县| 金塔县| 靖远县| 大港区| 浮山县| 兴化市| 修文县| 罗田县| 孙吴县| 三都| 淮滨县| 噶尔县| 周至县| 郴州市| 保亭| 容城县| 文水县| 南投县| 武川县| 禹州市| 禄丰县| 贵溪市| 平江县| 大邑县| 福贡县| 张掖市|