无码中文字幕色专区_91av俱乐部_无码人妻h动漫_26uuu成人_91九色丨porny丨国产jk_青青视频在线播放_国内自拍第二页_国产又粗又长又爽又黄的视频_色哟哟免费网站_久久出品必属精品_a级黄色一级片_99日在线视频

首頁 新聞 工控搜 論壇 廠商論壇 產品 方案 廠商 人才 文摘 下載 展覽
中華工控網首頁
  P L C | 變頻器與傳動 | 傳感器 | 現場檢測儀表 | 工控軟件 | 人機界面 | 運動控制
  D C S | 工業以太網 | 現場總線 | 顯示調節儀表 | 數據采集 | 數傳測控 | 工業安全
  電 源 | 嵌入式系統 | PC based | 機柜箱體殼體 | 低壓電器 | 機器視覺
函數遞歸在樹形結構數據遍歷中的應用
紫金橋軟件技術有限公司
收藏本文     查看收藏
 

       我們在使用樹形結構數據時,常常需要遍歷整棵樹或某一支下的所有結點,用于查找、打印等功能。因為樹形結構不同于數組、鏈表等簡單數據結構,它像樹枝一樣每個根結點可以具有多個子結點,無限延展,因此需要專門的算法去遍歷。樹形結構的遍歷有很多種方法,下面我們以紫金橋監控組態軟件(以下簡稱為“RealInfo)為例,簡單講解函數遞歸在這種遍歷方法中的應用。

       RealInfo中,“樹形控件”是表示樹狀結構數據的組件,“自由報表”是表示表格數據的組件,這兩種組件自身都提供了一些常用方法。我們現在實現這樣的功能:將樹形控件中的指定分支數據打印在自由報表中?梢岳么翱谧远x函數的遞歸功能。

       樹形控件中的數據顯示方式如下圖所示:

       每個結點以結點編碼為唯一標識,每個結點可以顯示一個字符串作為結點文本(詳見RealInfo聯機幫助)。

       本例中,我們將樹形結構數據打印在自由報表上,其效果如下圖所示:

       每個根結點打印完成后,遇到子結點時打印位置自動向右、向下移動一個單元格;遇到兄弟結點時打印位置向下移動一個單元格。

       現在我們開始分析算法。我們知道,樹的遍歷是指沿著某條搜索路線,依次對樹中每個結點均做一次且僅做一次訪問。這樣,我們把遍歷過程想象成為一次單程旅行,出發點是樹的根結點,然后按先自左向右、然后自上而下的順序,先后經過每個結點,最后走到最下方的葉子結點處。

我們可以采用這樣的遍歷方式:

1)        當所在結點具有子結點時,那么按自左向右原則,接著訪問它的第一個子結點,直到所在結點沒有子結點為止。

2)        當所在結點沒有子結點,但具有兄弟結點時,那么按自上向下原則依次訪問它的兄弟結點。

3)        當所在結點沒有子結點,而且沒有兄弟結點時,那么按自上向下原則訪問它父結點的兄弟結點。

分析這個過程并觀察樹形結構,我們會發現,每個父結點可以擁有n(n>=0)個子結點,若將這n個子結點看作父結點,則每個父結點仍然具有n個子結點。由此看來,每一支數據乃至整棵樹都可以看作是有限個父-子結構的組合。在樹的遍歷過程中,總是不斷的重復“父→子”這一訪問方式,因此我們可以提取這一方式形成一個函數,并利用函數遞歸來完成整個遍歷。

這個函數用于根據輸入的父結點編碼和起始打印位置將其所有子結點打印出來。算法如下:

       函數首先判斷輸入結點是否具有子結點,如果沒有則返回,如果有則取得子結點列表,然后循環打印每個子結點并遞歸調用自身函數打印其子結點,當一個結點a的子結點打印完畢并返回后按相同規則依次打印的a結點的兄弟結點,直到所有兄弟結點打印完畢為止。

       工程制作過程如下:

1)        新建窗口,創建樹形控件,起名為“tree”;創建自由報表起名為“report”;創建一個按鈕。

2)        創建窗口函數(用于得到指定結點的子結點編碼數組):

func_GetAllChildNodeKey(Tree& treeObj, String& strFatherNodeKey, String Array& strArrChildNodeKeys) As Int

代碼如下:

int nChildNodeCount = 0;

string strNodeKeyTemp = "";

int i = 0;

strArrChildNodeKeys.Clear();

nChildNodeCount = #treeObj.GetNodeCount(strFatherNodeKey);

for i=0 to nChildNodeCount

       if strFatherNodeKey=="" then

              strNodeKeyTemp = IntToStr(i,10);

       else

              strNodeKeyTemp = strFatherNodeKey + "." + IntToStr(i,10);

       endif

       strArrChildNodeKeys.Add(strNodeKeyTemp);

next

return nChildNodeCount;

3)        創建窗口函數(用于遞歸打印指定結點的子結點,不打印自身結點)

func_PrintToReport(String strFatherNodeKey, Int nCol, Int nRow, Int& nRowOffSet) As Int

代碼如下:

string strArrChildNodeKeys[];

string strNodeText = "";

int nCount = 0;

int i = 0;

func_GetAllChildNodeKey(#tree,strFatherNodeKey,strArrChildNodeKeys);

nCount = strArrChildNodeKeys.GetCount();

if nCount>0 then

       if #report.ColCount()<nCol then

              #report.AddCol(1);

       endif

       for i=0 to nCount

              if #report.RowCount()<nRow+nRowOffset then

                     #report.AddRow(1);

              endif

             

              strNodeText = #tree.GetNodeTxt(strArrChildNodeKeys[i]);       //打印本結點

              #report.SetTxt(nCol,nRow+nRowOffset,strNodeText);

              nRowOffset = nRowOffset + 1;

              nRowOffset = func_PrintToReport(strArrChildNodeKeys[i]

,nCol+1,nRow,nRowOffset); //遞歸

       next

endif

return nRowOffset;

4)        創建窗口函數(用于打印初始結點自身,并啟動遞歸函數):func_Print()

代碼如下

int nRowOffSet = 0;

#report.DelTailCol(#report.ColCount());

#report.DelTailRow(#report.RowCount());

#report.AddCol(1);

#report.AddRow(1);

#report.SetTxt(1,1,#tree.GetNodeTxt(#tree.GetCurSelNodeKey()));

func_PrintToReport(#tree.GetCurSelNodeKey(),2,2,nRowOffSet);

5)        在按鈕中鼠標點擊動作中輸入:func_Print();

6)        運行并查看效果。運行時,不選擇樹結點,點擊按鈕后報表中打印出整棵樹,因為根結點文本為空,所以報表第一列為空。選中任意一個樹結點后,報表中打印出本分支所有結點,包含本結點。

效果圖如下:

       本文以RealInfo為例,講述了一種通過函數遞歸調用來實現樹形結構數據遍歷的方法,其中遞歸函數體實現了打印指定結點的子結點功能。本方法適用于少量樹形結構數據的遍歷,當數據量過大時需要作進一步優化。


 

狀 態: 離線

公司簡介
產品目錄

公司名稱: 紫金橋軟件技術有限公司
聯 系 人: 李磊
電  話: 0459-8151391-808
傳  真: 0459-8151391-804
地  址: 大慶市高新區服務外包產業園C-1座817室
郵  編: 163316
主  頁:
 
該廠商相關技術文摘:
跨平臺實時數據庫變量引用導航功能介紹
跨平臺實時數據庫 如何利用MODBUS仿真軟件測試MODBUS驅動
紫金橋跨平臺實時數據庫如何實現多屏顯示
紫金橋跨平臺軟實時數據庫Web服務器和數據服務器分離訪問的配置
紫金橋跨平臺軟件遠程采集RealInfo6.5
使用虛擬機做的工程實現跨網Web訪問
紫金橋軟件Microsoft Office Access 2003的ODBC數據源配置
紫金橋軟件閘門整體自動化監控系統
通過紫金橋軟件來提高畫面組態速度
組態軟件在配套設備中的應用
紫金橋的關系庫同步工具簡介
紫金橋組態軟件與歐姆龍PLC以太網通信(FINS命令)——CPU型號-CJ2M-CPU33
更多文摘...
立即發送詢問信息在線聯系該技術文摘廠商:
用戶名: 密碼: 免費注冊為中華工控網會員
請留下您的有效聯系方式,以方便我們及時與您聯絡

關于我們 | 聯系我們 | 廣告服務 | 本站動態 | 友情鏈接 | 法律聲明 | 不良信息舉報
工控網客服熱線:0755-86369299
版權所有 中華工控網 Copyright©2022 Gkong.com, All Rights Reserved

无码中文字幕色专区_91av俱乐部_无码人妻h动漫_26uuu成人_91九色丨porny丨国产jk_青青视频在线播放_国内自拍第二页_国产又粗又长又爽又黄的视频_色哟哟免费网站_久久出品必属精品_a级黄色一级片_99日在线视频
欧日韩免费视频| 久久久无码中文字幕久...| 久久久九九九热| 国产精品333| 免费看污污视频| theporn国产精品| 欧美激情精品久久久久久小说| 美女扒开大腿让男人桶| 麻豆映画在线观看| 亚洲视频第二页| 91香蕉视频污版| 天天天干夜夜夜操| 男人操女人免费| 成年人黄色片视频| 欧美精品色婷婷五月综合| 日本国产在线播放| 久艹视频在线免费观看| 国产乱子伦精品无码专区| 男人j进女人j| 男人草女人视频| 国产精品自拍合集| 性一交一乱一伧国产女士spa| 9191国产视频| www.国产在线视频| 黄页免费在线观看视频| 国产人妻777人伦精品hd| 妞干网在线视频观看| 91黄色在线看| 国产精品久久久久久久乖乖| 人体内射精一区二区三区| 无码av天堂一区二区三区| 超碰成人免费在线| 黄色免费福利视频| av免费中文字幕| 日韩一级理论片| 天天综合天天添夜夜添狠狠添| 思思久久精品视频| 日本特级黄色大片| 国产美女永久无遮挡| 国产真人做爰毛片视频直播| 尤物av无码色av无码| 18岁视频在线观看| 天天综合网久久| 性做爰过程免费播放| 免费看欧美一级片| 日本黄网站免费| www,av在线| 丰满的少妇愉情hd高清果冻传媒| 国产极品在线视频| 少妇一级淫免费播放| 亚洲精品偷拍视频| 免费特级黄色片| 99999精品视频| 中文字幕线观看| 91免费国产精品| 久久精品99国产| 在线播放免费视频| 免费av手机在线观看| 日本爱爱免费视频| 久久久成人精品一区二区三区| 91.com在线| 91香蕉视频污版| japanese在线播放| 热久久精品免费视频| 特黄特黄一级片| 国产美女主播在线| 五月激情婷婷在线| 久久久久久www| 天天影视色综合| 99er在线视频| 午夜免费高清视频| 精品久久久久久无码中文野结衣| 色一情一乱一伦一区二区三区日本| 久久国产精品免费观看| 色多多视频在线播放| 黄色a级片免费看| 国产乱女淫av麻豆国产| 国产91美女视频| 视色,视色影院,视色影库,视色网| 国产精品无码av无码| 国产精品视频网站在线观看| www.日本一区| 黄色免费观看视频网站| 久久国产精品免费观看| 91极品尤物在线播放国产| 国产69精品久久久久999小说| 精品国产乱码久久久久久1区二区 91网址在线观看精品 | 国产xxxxx在线观看| 日韩视频在线观看视频| 凹凸日日摸日日碰夜夜爽1| 蜜臀av性久久久久蜜臀av| 日本人69视频| 99福利在线观看| 国产精品久久久久久久乖乖| 在线播放av中文字幕| 欧美成人精品欧美一级乱| 中文字幕色呦呦| 五月天开心婷婷| 手机看片福利日韩| 欧美三级在线观看视频| 日韩国产小视频| 国产日产欧美一区二区| 特黄视频免费观看| 99热这里只有精品在线播放| 黄色网页免费在线观看| 青草网在线观看| 午夜啪啪福利视频| 日韩成人av免费| 欧美日韩一区二区三区69堂| 激情内射人妻1区2区3区 | 虎白女粉嫩尤物福利视频| 男女激情免费视频| www.激情网| 四虎精品欧美一区二区免费| 国产福利片一区二区| 国产无遮挡猛进猛出免费软件| 男人的天堂日韩| 国产麻花豆剧传媒精品mv在线| 又粗又黑又大的吊av| 秋霞无码一区二区| 日韩五码在线观看| 精品少妇在线视频| 国产中文字幕乱人伦在线观看| 好色先生视频污| 波多野结衣在线免费观看| 国产农村妇女精品久久| 宅男噜噜噜66国产免费观看| 欧洲黄色一级视频| 国产福利视频在线播放| 日韩在线视频在线观看| 欧美视频免费播放| 麻豆传传媒久久久爱| 国产主播中文字幕| 高清一区在线观看| 免费成人黄色大片| 中文字幕综合在线观看| 国产一级大片免费看| 岛国大片在线播放| 欧美 日韩 国产在线观看| 日韩视频第二页| 一区二区成人网| 国产老熟妇精品观看| 亚洲人成无码网站久久99热国产 | 久久av综合网| 欧美在线观看成人| 性生交免费视频| 午夜免费看视频| 91xxx视频| av高清在线免费观看| 成人在线激情网| 91精产国品一二三产区别沈先生| 丰满女人性猛交| 天堂…中文在线最新版在线| 六月丁香婷婷在线| 拔插拔插华人永久免费| www.激情网| 成人免费观看视频在线观看| 亚洲77777| 三级在线免费观看| 免费黄色福利视频| 亚洲欧美日韩精品一区| 国产性生活免费视频| 日本一本二本在线观看| 超碰人人草人人| 黄色一级片黄色| 久草在在线视频| 国产精品夜夜夜爽张柏芝| 久久99中文字幕| 一区二区三区 日韩| 欧美一级爱爱视频| 国产情侣av自拍| 久久国产精品免费观看| 欧美亚洲国产成人| 爽爽爽在线观看| 日本在线xxx| 亚洲免费av一区| 国产免费裸体视频| 亚欧美在线观看| 免费特级黄色片| 免费看污污网站| 97碰在线视频| 在线观看免费视频高清游戏推荐| 成人国产一区二区三区| 亚洲黄色a v| av在线com| 婷婷中文字幕在线观看| 91好吊色国产欧美日韩在线| 九九热视频免费| 六月丁香婷婷在线| 男女裸体影院高潮| 国产又黄又猛又粗又爽的视频| 老司机激情视频| 久久人人爽av| 免费无码不卡视频在线观看| 亚洲高清av一区二区三区| 7777在线视频| 鲁一鲁一鲁一鲁一av| 国产成人精品视频免费看| 国产精品久久久影院| 午夜在线观看av|