亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        數(shù)據(jù)結(jié)構(gòu)中遍歷操作的非遞歸算法

        2019-09-10 10:15:21韓凱
        下一代 2019年3期
        關(guān)鍵詞:二叉樹數(shù)據(jù)結(jié)構(gòu)

        韓凱

        摘要:在研究樹的遍歷和圖的遍歷時大多使用非遞歸算法。本文主要對數(shù)據(jù)結(jié)構(gòu)進行概述分析二叉樹遍歷和圖的深度優(yōu)化搜索的非遞歸推算,理清了在研究樹與圖的過程中的思路,希望有所啟發(fā)。

        關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);二叉樹;圖的深度優(yōu)化搜索;非遞歸算法

        一、概述

        數(shù)據(jù)結(jié)構(gòu)是計算機的專業(yè)課程,數(shù)據(jù)結(jié)構(gòu)一股比較抽象復(fù)雜的,二叉樹和圖的操作算法還是具有代表性的,這兩種算法都需要遍歷操作為基礎(chǔ),所以只要了解了數(shù)據(jù)結(jié)構(gòu)中遍歷操作法,才能對樹和圖有深刻認識。

        二、二叉樹的遍歷

        (一)二叉樹的遍歷操作

        許多樹的應(yīng)用都是基于樹的遍歷來實現(xiàn)的,例如查找元素、插入元素等。二叉樹主要是根和左右子樹三部分,訪問是有一定順序的,所以導(dǎo)致遍歷先序、中序和后序三種方法。遍歷思想是類似的,先看二叉樹是否為空,不是的話就按照先根后左子樹最后右子樹來訪問,二叉樹是空的時候不需要操作。二叉樹在計算科學(xué)中有著重要的作用,如計算機操作系統(tǒng)中的文件管理、編譯程序的語法結(jié)構(gòu)和數(shù)據(jù)庫系統(tǒng)信息組織形式等;在生活中,二叉樹可以用在密碼學(xué)中,利用二叉樹的先序遍歷、后序便利、中序遍歷對密碼進行加密和解密;在經(jīng)濟中,二叉樹可以用來研究期權(quán)的定價模型。

        二、遍歷操作的非遞歸算法

        二叉樹的非遞歸遍歷要借助堆棧來實現(xiàn),具體算法為:

        1)設(shè)置一個堆棧進行初始化。

        2)把根節(jié)點所表示的指針入棧。

        3)當堆棧非空時,重復(fù)執(zhí)行下列步驟:①出棧會取得一個結(jié)點指針,對該結(jié)點進行訪問;②若該結(jié)點的右孩子不是空,則該結(jié)點的右子樹指針進棧;⑧若該結(jié)點的左孩子不是空,則該結(jié)點的左子樹指針進棧。

        二叉樹遍歷的非遞歸算法相對于遞歸算法,減少了函數(shù)調(diào)用等開銷,具有性能優(yōu)勢。

        先序遍歷:

        Int PreOrderl (BiTree T,Int (*Visit) (TElemTypee))

        {

        STack * S; 11 棧 S 中存儲指向樹結(jié)點的指針。

        BiTree P;

        ......

        //如果左子樹和右子樹均被訪問過,則結(jié)點退棧,并進行訪問。更新pre。else

        Pop(S,&p).

        if(! Visit(p- > data))

        retum ER ROR;

        pre =p;

        }

        }

        retum oK;

        對照非遞歸算法可以發(fā)現(xiàn):非遞歸算法應(yīng)用指針和堆棧,進行出棧和入棧的方法實現(xiàn)了算法,非遞歸算法程序總體來說較長,編寫和調(diào)試要費些時間,但因為其一直在調(diào)用其他函數(shù)進行進棧出棧,所以其占用的空間較少、用時也較短。

        三、圖的遍歷

        (一)深度優(yōu)先搜索

        圖的深度優(yōu)先搜索,是研究數(shù)據(jù)結(jié)構(gòu)圖的經(jīng)典方法。利用深度優(yōu)先搜索方法,把目標圖進行拓撲,對涂上一直點進行數(shù)字排列形成拓撲排序表,這種方法在解決圖論相關(guān)問題是是非常常見的,簡單方便又明晰易懂,只是在敲代碼的時間上比較久,但是不能以此忽略其解決問題的潛能。圖的遍歷主要是深度優(yōu)化搜索和廣度優(yōu)化搜索,這兩種遍歷方法,裝深度優(yōu)化搜索主要用數(shù)據(jù)的非遞歸算法。

        (二)深度優(yōu)先搜索的非遞歸算法

        深度優(yōu)化利用非遞歸算法,要記錄每一個從起點和所有臨接點之間的搜索記錄,記錄結(jié)果按照先出去后進來的原則進行存儲,只要把上一個點的搜索情況完成,下一個點

        才能夠繼續(xù)。舉實例來證明:設(shè)連通圖G中的邊集E={(a,b), (a,e), (a,c), (b,e), (e,d), (d,f),(f,c)},則從頂點a出發(fā)可以得到一種深度優(yōu)先遍歷的頂點序列是什么呢?圖的深度優(yōu)化搜索遍歷類似于樹的前序遍歷.首先訪問出發(fā)點A,并將其標記為已訪問過;然后依次從A出發(fā)搜索A的每個鄰接點B、C、D、E,首先判斷B是否曾訪問過,若是B未訪問過需要以B為新的出發(fā)點繼續(xù)前一個步驟深度優(yōu)化搜索,直至圖中所有和A相連接的點或者是有路徑相通點均己被訪問為止。圖中只要存在一個未進行訪問的點,就把此未訪問點作為頂點成為新的源頭重復(fù)之前的步驟進行訪問判斷,直至所有的點都被訪問為止。所以從A點出發(fā),找A的下一個點,A下一個點有B、C、D、E,首先到B,再以b為源點,再看B有沒有下一個點,發(fā)現(xiàn)B的下一個點是E,再以E為源點,E的下一個點是d,再以D為源點,下一個點是F,再以F的下一個點是C.這樣全部的點都得到了,該序列就是該圖的深度優(yōu)化搜索遍歷,即ABEDFC。

        己訪問頂點當前搜索情況的類型定義如下:

        struct V exSearchInfo

        { int vexIndex://已訪問頂點的下標

        AreNode * pNext;//指向已訪問頂點的下一個要判斷的鄰接點

        圈的深度優(yōu)先搜索算法如下:

        void DFSTraverse(ALGraph G)

        { VexSearchInfo sl[20];

        for(v=0;v=G.VEXNUM ;v++)

        ......

        //從最近已訪問頂點的鄰接點中尋找一個未訪問的頂點

        if(visited[p-→adjvex]==false) //找到一個未訪問的頂點

        {//訪問此頂點,并存儲其當前搜索情況

        cout<adjvex]data<<””;

        visited[p→adjvex]=true;

        temp.vexIndex=p→adjvex; temp. pNext=G.vertices[p→ad-jvex]. firstarc:

        sl[num++]=temp;

        break:

        if(p==NULL) num-;//如果最近已訪問頂點的所有鄰接點搜索完畢,則刪除頂點

        搜索情況。

        總體上而言,數(shù)據(jù)結(jié)構(gòu)的非遞歸算法是比較有效率的,很方便解決問題,但有一個弊端就是它的代碼比較長,需要自行管理。樹的遍歷和圖的遍歷在數(shù)據(jù)結(jié)構(gòu)分析中屬于比較復(fù)雜的結(jié)構(gòu),而且他們的便利操作是最基本又最重要的操作。研究二叉樹和圖的深度優(yōu)化搜索通常使用遞歸函數(shù),利用遞歸函數(shù)研究是存在一定的困難,便可以采用非遞歸算法,這種方法簡單明確,容易理解同樣可以對二叉樹和圖的深度優(yōu)化搜索進行描述。

        參考文獻

        [1]詹澤梅.數(shù)據(jù)結(jié)構(gòu)中遍歷操作的非遞歸算法[J].電腦知識與技術(shù),2017(28).

        猜你喜歡
        二叉樹數(shù)據(jù)結(jié)構(gòu)
        CSP真題——二叉樹
        電腦報(2022年37期)2022-09-28 05:31:07
        二叉樹創(chuàng)建方法
        數(shù)據(jù)結(jié)構(gòu)線上線下混合教學(xué)模式探討
        數(shù)據(jù)結(jié)構(gòu)課程教學(xué)網(wǎng)站的設(shè)計與實現(xiàn)
        電子測試(2018年15期)2018-09-26 06:01:42
        一種由層次遍歷和其它遍歷構(gòu)造二叉樹的新算法
        一種由遍歷序列構(gòu)造二叉樹的改進算法
        “翻轉(zhuǎn)課堂”教學(xué)模式的探討——以《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)為例
        高職高專數(shù)據(jù)結(jié)構(gòu)教學(xué)改革探討
        中國市場(2016年45期)2016-05-17 05:15:48
        TRIZ理論在“數(shù)據(jù)結(jié)構(gòu)”多媒體教學(xué)中的應(yīng)用
        論復(fù)雜二叉樹的初始化算法
        河南科技(2014年24期)2014-02-27 14:20:01
        中文字幕日韩精品人妻久久久| 亚洲国产高清在线观看视频| 国产爆乳乱码女大生Av| 日本岛国精品中文字幕| 日本人妻系列一区二区| 中文字幕乱码在线人妻| aⅴ精品无码无卡在线观看| 色爱区综合五月激情| 免青青草免费观看视频在线| 福利视频在线一区二区三区| 免费观看国产短视频的方法| 国产如狼似虎富婆找强壮黑人| 在线高清精品第一区二区三区| 日产精品一区二区三区免费| 亚洲三级中文字幕乱码| 国产v片在线播放免费无码| 欧美老妇与zozoz0交| 最新国产成人综合在线观看| 色婷婷精品大在线视频| 亚洲αv在线精品糸列| 国产精品久久久| 久久精品爱国产免费久久 | 日日躁欧美老妇| 在线国人免费视频播放| 激烈的性高湖波多野结衣| 欧美日韩另类视频| 亚洲精品一区二区三区蜜臀| 亚洲av熟女少妇久久| 久久中文字幕无码专区| 日本熟妇hd8ex视频| 蕾丝女同一区二区三区| 又粗又硬又大又爽免费视频播放| 亚洲一二三区在线观看| 亚洲视频一区二区蜜桃| 在线麻豆精东9制片厂av影现网 | 亚洲av五月天天堂网| 国产精品日韩经典中文字幕| 18女下面流水不遮图| 欧美色图50p| 亚洲精品中字在线观看| 成人综合网站|