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

一種思維導(dǎo)圖中快速更新樹結(jié)點(diǎn)位置坐標(biāo)的方法與流程

文檔序號:12364265閱讀:822來源:國知局
一種思維導(dǎo)圖中快速更新樹結(jié)點(diǎn)位置坐標(biāo)的方法與流程

本發(fā)明屬于計算機(jī)技術(shù)領(lǐng)域,具體涉及一種思維導(dǎo)圖中快速更新樹結(jié)點(diǎn)位置坐標(biāo)的方法。



背景技術(shù):

思維導(dǎo)圖軟件系統(tǒng)廣泛用于教育、工作中,用于提高學(xué)習(xí)和工作效率。教師可以在課堂展示知識的邏輯關(guān)系,便于學(xué)生理解;學(xué)生可以用于記錄整理筆記,培養(yǎng)洞察力、創(chuàng)造力;白領(lǐng)可以用于記錄整理資料,提高解決工作中遇到問題的能力,作為工作會議的演示文稿,提高內(nèi)容的說服力。在記錄或展示思維導(dǎo)圖的內(nèi)容時,需要頻繁的變化結(jié)點(diǎn)的位置。因為所有展開的結(jié)點(diǎn)均在一張圖上,任一結(jié)點(diǎn)占據(jù)空間的變化都需要重新計算結(jié)點(diǎn)坐標(biāo)以便在正確的位置顯示結(jié)點(diǎn)?,F(xiàn)有的思維導(dǎo)圖軟件系統(tǒng)中,一旦涉及到樹結(jié)點(diǎn)位置的更新則會重新遍歷圖上的所有結(jié)點(diǎn)的坐標(biāo)進(jìn)行其絕對坐標(biāo)的更新計算。當(dāng)思維導(dǎo)圖系統(tǒng)中結(jié)點(diǎn)數(shù)量比較大時,更新坐標(biāo)的計算量會急劇增加,從而導(dǎo)致操作延遲明顯而顯著影響用戶使用思維導(dǎo)圖軟件系統(tǒng)的體驗。因此設(shè)計一套新的用于減少更新結(jié)點(diǎn)坐標(biāo)的計算量的坐標(biāo)更新方法從而快速更新樹結(jié)點(diǎn)位置坐標(biāo)對于思維導(dǎo)圖類軟件系統(tǒng)具有重要的意義。



技術(shù)實現(xiàn)要素:

針對現(xiàn)有技術(shù)的缺陷,本發(fā)明提供一種思維導(dǎo)圖中快速更新樹結(jié)點(diǎn)位置坐標(biāo)的方法,以減少在思維導(dǎo)圖中更新樹結(jié)點(diǎn)位置坐標(biāo)的計算量從而消除當(dāng)樹結(jié)點(diǎn)數(shù)量較大時明顯對樹結(jié)點(diǎn)操作的延遲。本發(fā)明采用的技術(shù)方案為:

第一方面本發(fā)明實施例提供了一種思維導(dǎo)圖中快速更新樹結(jié)點(diǎn)位置坐標(biāo)的方法,其特征在于所述方法包括如下步驟:

步驟一,當(dāng)思維導(dǎo)圖中進(jìn)行樹結(jié)點(diǎn)操作后計算當(dāng)前操作結(jié)點(diǎn)的相對坐標(biāo)變化量,標(biāo)記此結(jié)點(diǎn)進(jìn)行遞歸運(yùn)算;

步驟二,根據(jù)相對坐標(biāo)變化量計算當(dāng)前操作結(jié)點(diǎn)所有兄弟結(jié)點(diǎn)新的相對坐標(biāo);

步驟三,更新當(dāng)前操作結(jié)點(diǎn)的樹分支高度;

步驟四,記錄當(dāng)前操作結(jié)點(diǎn)的父結(jié)點(diǎn)的原始樹分支高度;計算當(dāng)前操作結(jié)點(diǎn)的父結(jié)點(diǎn)新樹分支高度;設(shè)置當(dāng)前操作結(jié)點(diǎn)的父結(jié)點(diǎn)的相對坐標(biāo)變化量等于所述原始樹分支高度減去所述新樹分支高度或所述新樹分支高度減去所述原始樹分支高度;

步驟五,判斷當(dāng)前操作結(jié)點(diǎn)的父結(jié)點(diǎn)的相對坐標(biāo)變化量是否為0;若判斷結(jié)果為是,則進(jìn)入步驟八,若判斷結(jié)果為否,則進(jìn)入步驟六;

步驟六,判斷當(dāng)前操作結(jié)點(diǎn)的父結(jié)點(diǎn)是否為根結(jié)點(diǎn);若判斷結(jié)果為是,則進(jìn)入步驟八,若判斷結(jié)果為否,則進(jìn)入步驟七;

步驟七,標(biāo)記當(dāng)前操作結(jié)點(diǎn)的父結(jié)點(diǎn)為當(dāng)前操作結(jié)點(diǎn)后返回步驟二;

步驟八,從思維導(dǎo)圖中的根結(jié)點(diǎn)或相對坐標(biāo)變化量為0的結(jié)點(diǎn)開始用深度優(yōu)先搜索方法或廣度優(yōu)先搜索方法根據(jù)其下樹分支的每個結(jié)點(diǎn)的相對坐標(biāo)值遞歸計算其絕對坐標(biāo)值,方法結(jié)束。

可選的,所述步驟一中的樹結(jié)點(diǎn)操作包括:刪除結(jié)點(diǎn)、修改結(jié)點(diǎn)、添加結(jié)點(diǎn)、展開結(jié)點(diǎn)、折疊結(jié)點(diǎn)、合并結(jié)點(diǎn)、拆分結(jié)點(diǎn)中的一個或多個。

可選的,所述步驟一中的相對坐標(biāo)變化量的計算方法為:記錄當(dāng)前操作結(jié)點(diǎn)在操作前以其為根結(jié)點(diǎn)的原始樹分支高度;計算該結(jié)點(diǎn)在操作后的新樹分支高度;用所述新樹分支高度減去所述原始樹分支高度或所述原始樹分支高度減去所述新樹分支高度求得所述相對坐標(biāo)變化量。

可選的,所述步驟三中的一種樹分支高度的計算方法為:計算當(dāng)前操作結(jié)點(diǎn)的所有孩子結(jié)點(diǎn)的樹分支高度之和;比較當(dāng)前操作結(jié)點(diǎn)的結(jié)點(diǎn)高度與當(dāng)前操作結(jié)點(diǎn)的所有孩子結(jié)點(diǎn)的樹分支高度之和的大小;取兩者的最大值作為當(dāng)前操作結(jié)點(diǎn)的樹分支高度。

可選的,所述步驟三中的一種計算樹分支高度的計算方法為:將該樹分支的所有結(jié)點(diǎn)的高度值的累加得到其高度值。

可選的,所述步驟三中的一種計算樹分支高度的計算方法為:取該樹分支中最右邊結(jié)點(diǎn)的右邊界的絕對坐標(biāo)的X軸坐標(biāo)值減去該樹分支最左邊結(jié)點(diǎn)的左邊界的絕對坐標(biāo)的X軸坐標(biāo)值得到該樹分支的高度。

可選的,所述樹分支高度的計算方法應(yīng)用于計算目錄型樹分支最上邊結(jié)點(diǎn)的上邊界到最下邊結(jié)點(diǎn)的下邊界結(jié)點(diǎn)的距離。

可選的,所述樹分支高度的計算方法是應(yīng)用于計算目錄型樹分支最左邊結(jié)點(diǎn)的左邊界到最右邊結(jié)點(diǎn)的右邊界結(jié)點(diǎn)的距離。

可選的,所述步驟八的深度優(yōu)先搜索方法具體為:設(shè)定思維導(dǎo)圖中的根結(jié)點(diǎn)的絕對坐標(biāo)為(0,0)并以此根結(jié)點(diǎn)為出發(fā)點(diǎn),或以相對坐標(biāo)變化量為0的結(jié)點(diǎn)并以此結(jié)點(diǎn)為出發(fā)點(diǎn),根據(jù)每個結(jié)點(diǎn)的相對坐標(biāo)值和其父結(jié)點(diǎn)的絕對坐標(biāo)值,優(yōu)先遞歸計算樹分支中孩子結(jié)點(diǎn)的絕對坐標(biāo)值直到葉子結(jié)點(diǎn)再回溯,最后計算出樹分支中所有結(jié)點(diǎn)的絕對坐標(biāo)值。

可選的,所述步驟八的廣度優(yōu)先搜索方法具體為:設(shè)定思維導(dǎo)圖中的根結(jié)點(diǎn)的絕對坐標(biāo)為(0,0)并以此根結(jié)點(diǎn)為出發(fā)點(diǎn),或以相對坐標(biāo)變化量為0的結(jié)點(diǎn)并以此結(jié)點(diǎn)為出發(fā)點(diǎn),根據(jù)每個結(jié)點(diǎn)的相對坐標(biāo)值和其父結(jié)點(diǎn)的絕對坐標(biāo)值,由近及遠(yuǎn)逐層遞歸,最后計算出樹分支中所有結(jié)點(diǎn)的絕對坐標(biāo)值。

上述技術(shù)方案的有益效果在于:

本發(fā)明能夠減少思維導(dǎo)圖中更新樹結(jié)點(diǎn)位置坐標(biāo)信息的計算量,快速設(shè)定結(jié)點(diǎn)的新的位置坐標(biāo)信息,提高了樹結(jié)構(gòu)下運(yùn)算結(jié)點(diǎn)坐標(biāo)數(shù)據(jù)的效率。

在擁有大量結(jié)點(diǎn)的思維導(dǎo)圖中,結(jié)點(diǎn)操作的時間延遲明顯減少,提高了用戶使用思維導(dǎo)圖系統(tǒng)的體驗。

附圖說明

為了更清楚地說明本發(fā)明具體實施方式或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對具體實施方式或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹。在所有附圖中,類似的元件或部分一般由類似的附圖標(biāo)記標(biāo)識。附圖中,各元件或部分并不一定按照實際的比例繪制。在下文中將基于實施例并參考附圖來對本發(fā)明進(jìn)行更詳細(xì)的描述。其中:

圖1是進(jìn)行結(jié)點(diǎn)操作后該結(jié)點(diǎn)及其父結(jié)點(diǎn)直到根結(jié)點(diǎn)計算的相對坐標(biāo)變化值均不為0時,相對坐標(biāo)值發(fā)生變化的結(jié)點(diǎn)的示意圖;

圖2是時進(jìn)行結(jié)點(diǎn)操作后該結(jié)點(diǎn)的相對坐標(biāo)變化量不為0,該結(jié)點(diǎn)的父結(jié)點(diǎn)的相對坐標(biāo)變化量為0時,相對坐標(biāo)值發(fā)生變化的結(jié)點(diǎn)的示意圖;

圖3是二維坐標(biāo)系中圖1對應(yīng)的樹分支高度計算的示意圖;

圖4是二維坐標(biāo)系中圖2對應(yīng)的樹分支高度計算的示意圖;

圖5是二維坐標(biāo)系中樹分支高度計算的一種示意圖;

圖6是二維坐標(biāo)系中樹分支高度計算的另一種示意圖;

圖7是快速更新樹結(jié)點(diǎn)位置坐標(biāo)的流程圖。

具體實施方式

下面將結(jié)合附圖對本發(fā)明技術(shù)方案的實施例進(jìn)行詳細(xì)的描述。以下實施例僅用于更加清楚地說明本發(fā)明的技術(shù)方案,因此只是作為示例,而不能以此來限制本發(fā)明的保護(hù)范圍。

本發(fā)明的核心思想是:完成對樹結(jié)點(diǎn)操作后,樹中僅有部分結(jié)點(diǎn)的相對坐標(biāo)發(fā)生變化,通過相對坐標(biāo)變化量修改這部分結(jié)點(diǎn)的相對坐標(biāo)值。然后根據(jù)相對坐標(biāo)計算絕對坐標(biāo)變化的結(jié)點(diǎn)的新的絕對坐標(biāo)值。通過少量的結(jié)點(diǎn)的相對坐標(biāo)值的更新和簡單的相對坐標(biāo)轉(zhuǎn)換為絕對坐標(biāo),減小了計算量,實現(xiàn)了思維導(dǎo)圖中快速更新樹結(jié)點(diǎn)位置坐標(biāo)的目地。

本發(fā)明涉及的運(yùn)算字符解釋:

N1結(jié)點(diǎn)是指當(dāng)前操作結(jié)點(diǎn),即當(dāng)前進(jìn)行樹結(jié)點(diǎn)操作的結(jié)點(diǎn);

Z結(jié)點(diǎn)是指將當(dāng)前操作結(jié)點(diǎn)進(jìn)行遞歸運(yùn)算的結(jié)點(diǎn);

Shift是指當(dāng)前結(jié)點(diǎn)的相對坐標(biāo)變化量;

orig_height是指原始樹分支高度;

height是進(jìn)行結(jié)點(diǎn)操作后的樹分支高度;

tree_height是指遞歸運(yùn)算結(jié)點(diǎn)的所有孩子結(jié)點(diǎn)的樹分支高度之和;

Z_height是指遞歸運(yùn)算結(jié)點(diǎn)的高度值。

本發(fā)明涉及的技術(shù)術(shù)語解釋:

樹結(jié)點(diǎn)操作是指刪除結(jié)點(diǎn)、修改結(jié)點(diǎn)、添加結(jié)點(diǎn)、展開結(jié)點(diǎn)、折疊結(jié)點(diǎn)、合并結(jié)點(diǎn)和拆分結(jié)點(diǎn);

刪除結(jié)點(diǎn)是指將該結(jié)點(diǎn)及以此結(jié)點(diǎn)為根結(jié)點(diǎn)的樹分支刪除;

修改結(jié)點(diǎn)是指改變結(jié)點(diǎn)的內(nèi)容或結(jié)點(diǎn)的屬性,如字體大小、字體粗細(xì)、字體類型等;

添加結(jié)點(diǎn)是指在當(dāng)前目標(biāo)結(jié)點(diǎn)下添加兄弟結(jié)點(diǎn)、孩子結(jié)點(diǎn)、父結(jié)點(diǎn);

展開結(jié)點(diǎn)是指將該結(jié)點(diǎn)的孩子結(jié)點(diǎn)連線顯示或?qū)⒃摻Y(jié)點(diǎn)下的樹分支上的所有結(jié)點(diǎn)連線顯示;

折疊結(jié)點(diǎn)是指將該結(jié)點(diǎn)下的樹分支上的所有結(jié)點(diǎn)連線隱藏但該結(jié)點(diǎn)不隱藏;

合并結(jié)點(diǎn)是指將多個結(jié)點(diǎn)合并為一個結(jié)點(diǎn);

拆分結(jié)點(diǎn)是指將一個多行結(jié)點(diǎn)分解,一行作為一個結(jié)點(diǎn),并互為兄弟結(jié)點(diǎn)。

絕對坐標(biāo)是指結(jié)點(diǎn)所在的計算機(jī)圖形界面中畫布上的具有x軸和y軸的二維坐標(biāo);

相對坐標(biāo)是指結(jié)點(diǎn)的絕對坐標(biāo)(x1,y1)與該結(jié)點(diǎn)的父結(jié)點(diǎn)的絕對坐標(biāo)(x2,y2)的相應(yīng)坐標(biāo)值的差值形成的坐標(biāo)(x1-x2,y1-y2)或(x2-x1,y2-y1);

結(jié)點(diǎn)的絕對坐標(biāo)值是由該結(jié)點(diǎn)的父結(jié)點(diǎn)的絕對坐標(biāo)值加上或減去該結(jié)點(diǎn)相應(yīng)的相對坐標(biāo)值得出;

相對坐標(biāo)變化量是指進(jìn)行樹結(jié)點(diǎn)操作后相對于未進(jìn)行樹結(jié)點(diǎn)操作之前該結(jié)點(diǎn)所在的樹分支的高度變化;

目錄型樹分支是指樹中所有孩子結(jié)點(diǎn)順序疊放在父結(jié)點(diǎn)的下邊,并與父結(jié)點(diǎn)用線相連。

本發(fā)明中不同結(jié)點(diǎn)操作具體解釋:

刪除結(jié)點(diǎn)時,使該結(jié)點(diǎn)的兄弟結(jié)點(diǎn)向靠近該結(jié)點(diǎn)的方向來改變兄弟結(jié)點(diǎn)在該方向?qū)?yīng)的坐標(biāo)軸的相對坐標(biāo)值達(dá)到使兄弟結(jié)點(diǎn)靠近該結(jié)點(diǎn)相對坐標(biāo)變化值一半的距離;

修改結(jié)點(diǎn)時,如果結(jié)點(diǎn)相對坐標(biāo)變化量增加,則使該結(jié)點(diǎn)的兄弟結(jié)點(diǎn)向遠(yuǎn)離該結(jié)點(diǎn)的方向來改變兄弟結(jié)點(diǎn)在該方向?qū)?yīng)的坐標(biāo)軸的相對坐標(biāo)值達(dá)到使兄弟結(jié)點(diǎn)遠(yuǎn)離該結(jié)點(diǎn)相對坐標(biāo)變化值一半的距離;如果結(jié)點(diǎn)相對坐標(biāo)變化值減少,則使該結(jié)點(diǎn)的兄弟結(jié)點(diǎn)向靠近該結(jié)點(diǎn)的方向來改變兄弟結(jié)點(diǎn)在該方向?qū)?yīng)的坐標(biāo)軸的相對坐標(biāo)值達(dá)到使兄弟結(jié)點(diǎn)靠近該結(jié)點(diǎn)相對坐標(biāo)變化值一半的距離;

添加結(jié)點(diǎn)時,使該結(jié)點(diǎn)的兄弟結(jié)點(diǎn)向遠(yuǎn)離該結(jié)點(diǎn)的方向來改變兄弟結(jié)點(diǎn)在該方向?qū)?yīng)的坐標(biāo)軸的相對坐標(biāo)值,達(dá)到使兄弟結(jié)點(diǎn)遠(yuǎn)離該結(jié)點(diǎn)相對坐標(biāo)變化值一半的距離;

展開結(jié)點(diǎn)時,使該結(jié)點(diǎn)的兄弟結(jié)點(diǎn)向遠(yuǎn)離該結(jié)點(diǎn)的方向來改變兄弟結(jié)點(diǎn)在該方向?qū)?yīng)的坐標(biāo)軸的相對坐標(biāo)值,達(dá)到使兄弟結(jié)點(diǎn)遠(yuǎn)離該結(jié)點(diǎn)相對坐標(biāo)變化值一半的距離;

折疊結(jié)點(diǎn)時,使該結(jié)點(diǎn)的兄弟結(jié)點(diǎn)向靠近該結(jié)點(diǎn)的方向來改變兄弟結(jié)點(diǎn)在該方向?qū)?yīng)的坐標(biāo)軸的相對坐標(biāo)值達(dá)到使兄弟結(jié)點(diǎn)靠近該結(jié)點(diǎn)相對坐標(biāo)變化值一半的距離;

合并結(jié)點(diǎn)時,刪除被合并的結(jié)點(diǎn),使合并生成的結(jié)點(diǎn)的兄弟結(jié)點(diǎn)向遠(yuǎn)離該結(jié)點(diǎn)的方向來改變兄弟結(jié)點(diǎn)在該方向?qū)?yīng)的坐標(biāo)軸的相對坐標(biāo)值達(dá)到使兄弟結(jié)點(diǎn)遠(yuǎn)離該結(jié)點(diǎn)相對坐標(biāo)變化值一半的距離;

拆分結(jié)點(diǎn)時,刪除該結(jié)點(diǎn),把該結(jié)點(diǎn)內(nèi)容以行為單位生成新結(jié)點(diǎn),并添加新生成結(jié)點(diǎn)作為被拆分結(jié)點(diǎn)的父結(jié)點(diǎn)的孩子結(jié)點(diǎn)。

在這里示出和描述的所有示例中,除非另有規(guī)定,任何具體值應(yīng)被解釋為僅僅是示例性的,而不是作為限制,因此,示例性實施例的其他示例可以具有不同的值。

實施例1參照附圖1、圖3及圖7所示:

本實施例設(shè)定每個結(jié)點(diǎn)的絕對坐標(biāo)為該結(jié)點(diǎn)的中心點(diǎn)在二維坐標(biāo)系中的坐標(biāo),思維導(dǎo)圖根結(jié)點(diǎn)的中心點(diǎn)的絕對坐標(biāo)設(shè)置為(0,0),樹分支高度的計算方法使用圖3所示的方法。

圖1中黑色方框中的結(jié)點(diǎn)是結(jié)點(diǎn)2222經(jīng)過折疊結(jié)點(diǎn)操作后該結(jié)點(diǎn)及其父結(jié)點(diǎn)直至根結(jié)點(diǎn)(即:結(jié)點(diǎn)2222、結(jié)點(diǎn)222、結(jié)點(diǎn)22、結(jié)點(diǎn)2)的相對坐標(biāo)變化量均不為0時,導(dǎo)致相對坐標(biāo)值產(chǎn)生變化的結(jié)點(diǎn)。其他結(jié)點(diǎn)的相對坐標(biāo)值均不變化。此時,以結(jié)點(diǎn)2222為根結(jié)點(diǎn)的樹分支的所有結(jié)點(diǎn)、結(jié)點(diǎn)2222及其父結(jié)點(diǎn)222、結(jié)點(diǎn)222的父結(jié)點(diǎn)22、結(jié)點(diǎn)22的父結(jié)點(diǎn)2的絕對坐標(biāo)值也不發(fā)生變化。圖3是二維坐標(biāo)系中樹分支高度計算方法中的一種情況,即將結(jié)點(diǎn)2222的所有孩子結(jié)點(diǎn)的樹分支高度累加得到結(jié)點(diǎn)2222的樹分支高度。此時應(yīng)用本發(fā)明:一種思維導(dǎo)圖中快速更新樹結(jié)點(diǎn)位置坐標(biāo)的方法,包括如下步驟:

步驟一,計算當(dāng)前操作結(jié)點(diǎn)2222相對坐標(biāo)變化量shift,標(biāo)記當(dāng)前結(jié)點(diǎn)2222為Z結(jié)點(diǎn);

步驟二,根據(jù)相對坐標(biāo)變化量shift計算Z結(jié)點(diǎn)所有兄弟結(jié)點(diǎn)新的相對坐標(biāo);

步驟三,更新Z結(jié)點(diǎn)樹分支高度;

步驟四,記錄Z結(jié)點(diǎn)的父結(jié)點(diǎn)222的原始樹分支高度orig_height;計算Z結(jié)點(diǎn)的父結(jié)點(diǎn)222的新樹分支高度height;設(shè)置shift=orig_height-height;

步驟五,判斷shift是否為0;若判斷結(jié)果為是,則進(jìn)入步驟八,若判斷結(jié)果為否,則進(jìn)入步驟六;

步驟六,判斷Z結(jié)點(diǎn)的父結(jié)點(diǎn)222是否為根結(jié)點(diǎn);若判斷結(jié)果為是,則進(jìn)入步驟八,若判斷結(jié)果為否,進(jìn)入步驟七;

步驟七,標(biāo)記Z結(jié)點(diǎn)的父結(jié)點(diǎn)222為Z結(jié)點(diǎn)后返回步驟二;

步驟八,從根結(jié)點(diǎn)開始用深度優(yōu)先搜索方法根據(jù)每個結(jié)點(diǎn)的相對坐標(biāo)值遞歸計算其絕對坐標(biāo)值,方法結(jié)束。

所述步驟一中的變化量shift的計算方法為記錄結(jié)點(diǎn)2222在折疊結(jié)點(diǎn)操作前以結(jié)點(diǎn)2222為根結(jié)點(diǎn)的樹分支高度orig_height;計算結(jié)點(diǎn)2222在折疊結(jié)點(diǎn)操作后其樹分支高度height,此時結(jié)點(diǎn)2222的孩子結(jié)點(diǎn)被折疊,所以height值為結(jié)點(diǎn)2222的結(jié)點(diǎn)高度,設(shè)置shift=orig_height-height。

所述步驟二中Z結(jié)點(diǎn)的相對坐標(biāo)和絕對坐標(biāo)均不變化;Z結(jié)點(diǎn)下面的兄弟結(jié)點(diǎn)的x軸坐標(biāo)值不變,y軸坐標(biāo)值減去shift/2.0;Z結(jié)點(diǎn)上面的兄弟結(jié)點(diǎn)的x軸坐標(biāo)值不變,y軸坐標(biāo)值加上shift/2.0。

所述步驟三中計算Z結(jié)點(diǎn)的所有孩子結(jié)點(diǎn)的樹分支高度之和tree_height;比較Z結(jié)點(diǎn)的結(jié)點(diǎn)高度Z_height與tree_height的大小,取最大值作為Z結(jié)點(diǎn)的樹分支高度。

所述步驟八中設(shè)定思維導(dǎo)圖的根結(jié)點(diǎn)的絕對坐標(biāo)為(0,0),以此根結(jié)點(diǎn)為出發(fā)點(diǎn),利用深度優(yōu)先搜索方法根據(jù)每個結(jié)點(diǎn)的相對坐標(biāo)值和其父結(jié)點(diǎn)的絕對坐標(biāo)值,依次計算出每個結(jié)點(diǎn)的絕對坐標(biāo)值。

實施例2參照附圖2、圖4及圖7所示:

本實施例設(shè)定每個結(jié)點(diǎn)的絕對坐標(biāo)為該結(jié)點(diǎn)的中心點(diǎn)在二維坐標(biāo)系中的坐標(biāo),思維導(dǎo)圖根結(jié)點(diǎn)的中心點(diǎn)的絕對坐標(biāo)設(shè)置為(0,0),樹分支高度的計算方法使用圖4所示的方法。

圖2中結(jié)點(diǎn)222的所有孩子結(jié)點(diǎn)的樹分支高度之和小于結(jié)點(diǎn)222的結(jié)點(diǎn)高度,結(jié)點(diǎn)2222經(jīng)過展開結(jié)點(diǎn)操作后,其新的樹分支高度與其所有兄弟結(jié)點(diǎn)的樹分支高度之和仍然小于結(jié)點(diǎn)222的結(jié)點(diǎn)高度。黑色方框中的結(jié)點(diǎn)是結(jié)點(diǎn)2222經(jīng)過展開結(jié)點(diǎn)操作后該結(jié)點(diǎn)相對坐標(biāo)變化量不為0時,導(dǎo)致相對坐標(biāo)值產(chǎn)生變化的結(jié)點(diǎn)。其他結(jié)點(diǎn)的相對坐標(biāo)值均不變化。此時結(jié)點(diǎn)2222的兄弟結(jié)點(diǎn)及其兄弟結(jié)點(diǎn)的樹分支外,所有結(jié)點(diǎn)的絕對坐標(biāo)值也不變化。此時應(yīng)用本發(fā)明:一種思維導(dǎo)圖中快速更新樹結(jié)點(diǎn)位置坐標(biāo)的方法,包括如下步驟:

步驟一,計算當(dāng)前結(jié)點(diǎn)2222相對坐標(biāo)變化量shift,標(biāo)記當(dāng)前結(jié)點(diǎn)2222為Z結(jié)點(diǎn);

步驟二,根據(jù)相對坐標(biāo)變化量shift計算Z結(jié)點(diǎn)所有兄弟結(jié)點(diǎn)新的相對坐標(biāo);

步驟三,更新Z結(jié)點(diǎn)樹分支高度;本實施例中Z結(jié)點(diǎn)父結(jié)點(diǎn)222的孩子結(jié)點(diǎn)的樹分支高度總和小于結(jié)點(diǎn)222的高度,用結(jié)點(diǎn)222的結(jié)點(diǎn)高度作為以結(jié)點(diǎn)222為根結(jié)點(diǎn)的樹分支的高度;

步驟四,記錄Z結(jié)點(diǎn)的父結(jié)點(diǎn)222的原始樹分支高度orig_height;計算Z結(jié)點(diǎn)的父結(jié)點(diǎn)22的新樹分支高度height;設(shè)置shift=height-orig_height;

步驟五,判斷shift是否為0;若判斷結(jié)果為是,則進(jìn)入步驟八,若判斷結(jié)果為否,則進(jìn)入步驟六;

步驟六,判斷Z結(jié)點(diǎn)的父結(jié)點(diǎn)222是否為根結(jié)點(diǎn);若判斷結(jié)果為是,則進(jìn)入步驟八,若判斷結(jié)果為否,則進(jìn)入步驟七;

步驟七,標(biāo)記Z結(jié)點(diǎn)的父結(jié)點(diǎn)222為Z結(jié)點(diǎn)后返回步驟二;

步驟八,從結(jié)點(diǎn)相對坐標(biāo)變化量為0的結(jié)點(diǎn)(本實施例中為結(jié)點(diǎn)222)開始用深度優(yōu)先搜索方法根據(jù)每個結(jié)點(diǎn)的相對坐標(biāo)值遞歸計算其絕對坐標(biāo)值,方法結(jié)束。

所述步驟一中的變化量shift的計算方法為記錄結(jié)點(diǎn)2222在展開結(jié)點(diǎn)操作前以結(jié)點(diǎn)2222為根結(jié)點(diǎn)的樹分支高度orig_height;計算結(jié)點(diǎn)2222在展開結(jié)點(diǎn)操作后其樹分支高度height,此時結(jié)點(diǎn)2222的孩子結(jié)點(diǎn)被展開,所以height值是結(jié)點(diǎn)2222的所有孩子結(jié)點(diǎn)的樹分支高度之和與結(jié)點(diǎn)2222的結(jié)點(diǎn)高度兩者之間的最大值,在此實例中其所有孩子結(jié)點(diǎn)的樹分支高度之和的值最大,設(shè)置shift=height-orig_height。

所述步驟二中Z結(jié)點(diǎn)的相對坐標(biāo)和絕對坐標(biāo)均不變化;Z結(jié)點(diǎn)下面的兄弟結(jié)點(diǎn)的x軸坐標(biāo)值不變,y軸坐標(biāo)值加上shift/2.0;Z結(jié)點(diǎn)上面的兄弟結(jié)點(diǎn)的x軸坐標(biāo)值不變,y軸坐標(biāo)值減去shift/2.0。

所述步驟三中計算Z結(jié)點(diǎn)的所有孩子結(jié)點(diǎn)的樹分支高度之和tree_height;比較Z結(jié)點(diǎn)的結(jié)點(diǎn)高度Z_height與tree_height的大小,取最大值作為Z結(jié)點(diǎn)的樹分支高度。

所述步驟八中以結(jié)點(diǎn)222出發(fā)點(diǎn),利用深度優(yōu)先搜索方法根據(jù)每個結(jié)點(diǎn)的相對坐標(biāo)值和其父結(jié)點(diǎn)的絕對坐標(biāo)值,依次計算出以結(jié)點(diǎn)222為根結(jié)點(diǎn)的樹分支上的每個結(jié)點(diǎn)的絕對坐標(biāo)值。

在本發(fā)明中,樹分支高度的計算方法包括參照圖3、圖4所示中的一種計算樹分支高度的計算方法為將該分支所有孩子結(jié)點(diǎn)的樹分支高度值相加(如果孩子結(jié)點(diǎn)是葉子結(jié)點(diǎn),則用葉子結(jié)點(diǎn)的結(jié)點(diǎn)高度作為該結(jié)點(diǎn)的樹分支高度),如果孩子結(jié)點(diǎn)的樹分支高度總和小于父結(jié)點(diǎn)的結(jié)點(diǎn)高度,則用該父結(jié)點(diǎn)的結(jié)點(diǎn)高度作為以父結(jié)點(diǎn)為根結(jié)點(diǎn)的樹分支的高度,否則以所有孩子結(jié)點(diǎn)樹分支高度值的累加和作為該樹分支的高度值。

另一種樹分支高度的計算方法參照圖5所示,將該樹分支的所有結(jié)點(diǎn)的高度值的累加得到其高度值。此種樹分支高度是針對目錄型樹分支結(jié)點(diǎn)的最上邊結(jié)點(diǎn)的上邊界到最下邊結(jié)點(diǎn)的下邊界的距離。

另一種樹分支高度的計算方法參照圖6所示,取該樹分支中最右邊結(jié)點(diǎn)的右邊界的絕對坐標(biāo)的X軸坐標(biāo)值減去該樹分支最左邊結(jié)點(diǎn)的左邊界的絕對坐標(biāo)的X軸坐標(biāo)值得到該樹分支的高度。此種樹分支高度是針對目錄型樹分支最左邊結(jié)點(diǎn)的左邊界到最右邊結(jié)點(diǎn)的右邊界的距離。

在實施例1和實施例2中,當(dāng)完成對樹結(jié)點(diǎn)的操作后,樹中僅有部分結(jié)點(diǎn)的相對坐標(biāo)發(fā)生變化,通過相對坐標(biāo)變化值修改這部分結(jié)點(diǎn)的相對坐標(biāo)值。然后根據(jù)相對坐標(biāo)計算絕對坐標(biāo)變化的結(jié)點(diǎn)的新的絕對坐標(biāo)值。通過少量的結(jié)點(diǎn)的相對坐標(biāo)值的更新和簡單的相對坐標(biāo)轉(zhuǎn)換為絕對坐標(biāo),系統(tǒng)利用絕對坐標(biāo)和相對坐標(biāo)組合的復(fù)合坐標(biāo)系統(tǒng)達(dá)到定位結(jié)點(diǎn)的目的。實現(xiàn)了思維導(dǎo)圖中快速更新樹結(jié)點(diǎn)位置坐標(biāo)的目標(biāo)。

在實施例2中,當(dāng)完成對樹結(jié)點(diǎn)操作后,結(jié)點(diǎn)2222經(jīng)過展開結(jié)點(diǎn)操作后,其新的樹分支高度與其所有兄弟結(jié)點(diǎn)的樹分支高度之和仍然小于結(jié)點(diǎn)222的結(jié)點(diǎn)高度,導(dǎo)致相對坐標(biāo)值和絕對坐標(biāo)值產(chǎn)生變化的結(jié)點(diǎn)局限于以222為根結(jié)點(diǎn)的樹分支,其他結(jié)點(diǎn)的相對坐標(biāo)值和絕對坐標(biāo)值均不變化。此種情況使得更新樹分支結(jié)點(diǎn)坐標(biāo)的計算量大大減小,實現(xiàn)了思維導(dǎo)圖中快速更新樹結(jié)點(diǎn)位置坐標(biāo)的目標(biāo)。

根據(jù)實施例1、2的經(jīng)驗表明,在擁有大量結(jié)點(diǎn)的思維導(dǎo)圖中,結(jié)點(diǎn)操作的時間延遲明顯減少,可以明顯提高用戶使用思維導(dǎo)圖系統(tǒng)的體驗。

雖然已經(jīng)參考優(yōu)選實施例對本發(fā)明進(jìn)行了描述,但在不脫離本發(fā)明的范圍的情況下,可以對其進(jìn)行各種改進(jìn)并且可以用等效物替換其中的部件。尤其是,只要不存在結(jié)構(gòu)沖突,各個實施例中所提到的各項技術(shù)特征均可以任意方式組合起來。本發(fā)明并不局限于文中公開的特定實施例,而是包括落入權(quán)利要求的范圍內(nèi)的所有技術(shù)方案。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
安化县| 聊城市| 浮山县| 禄丰县| 浠水县| 红桥区| 三台县| 天祝| 临安市| 安西县| 西和县| 革吉县| 潞西市| 东宁县| 大兴区| 都江堰市| 尼勒克县| 白银市| 夏河县| 九龙坡区| 昭苏县| 儋州市| 任丘市| 青州市| 田东县| 塔城市| 四川省| 抚州市| 佛山市| 霞浦县| 灌南县| 石屏县| 靖宇县| 都兰县| 华容县| 巴马| 新宾| 和硕县| 永平县| 曲阜市| 永和县|