大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 詳解二叉樹先序遍歷

詳解二叉樹先序遍歷

更新時間:2021-02-03 17:41:53 來源:動力節點 瀏覽1504次

遍歷是對樹的一種最基本的運算,所謂遍歷二叉樹,就是按一定的規則和順序走遍二叉樹的所有結點,使每一個結點都被訪問一次,而且只被訪問一次。我們都知道二叉樹的遍歷方式有先序、中序和后序遍歷,本文我們主要來介紹二叉樹先序遍歷

首先,我們要知道二叉樹先序遍歷的實現思想:

1.訪問根節點;

2.訪問當前節點的左子樹;

3.若當前節點無左子樹,則訪問當前節點的右子樹;

如下圖表示一顆二叉樹,對它進行先序遍歷操作,采用兩種方法,遞歸和非遞歸操作。

采用先序遍歷的思想遍歷該二叉樹的過程為:

1.訪問該二叉樹的根節點,找到 1;

2.訪問節點 1 的左子樹,找到節點 2;

3.訪問節點 2 的左子樹,找到節點 4;

4.由于訪問節點 4 左子樹失敗,且也沒有右子樹,因此以節點 4 為根節點的子樹遍歷完成。但節點 2 還沒有遍歷其右子樹,因此現在開始遍歷,即訪問節5;

5.由于節點 5 無左右子樹,因此節點 5 遍歷完成,并且由此以節點 2 為根節點的子樹也遍歷完成。現在回到節點 1 ,并開始遍歷該節點的右子樹,即訪問節點 3;

6.訪問節點 3 左子樹,找到節點6;

7.由于節點 6無左右子樹,因此以節點6為根節點的子樹遍歷完成。但節點 3還沒有遍歷其右子樹,因此現在開始遍歷,即訪問節7;到這里,整個先序遍歷完成。

1、遞歸操作:

思想:若二叉樹為空,返回。否則

1)遍歷根節點;

2)先序遍歷左子樹;

3)先序遍歷右子樹

代碼:

void PreOrder(BiTree root) ?

{ ?

????if(root==NULL) ?

????????return ; ?

????printf("%c ", root->data); //輸出數據 ?

????PreOrder(root->lchild); //遞歸調用,先序遍歷左子樹 ?

????PreOrder(root->rchild); //遞歸調用,先序遍歷右子樹 ?

} ?

2、非遞歸操作

思想:二叉樹的非遞歸先序遍歷,先序遍歷思想:先讓根進棧,只要棧不為空,就可以做彈出操作, 每次彈出一個結點,記得把它的左右結點都進棧,記得右子樹先進棧,這樣可以保證右子樹在棧中總處于左子樹的下面。

代碼:

void PreOrder_Nonrecursive(BiTree T)     //先序遍歷的非遞歸    

{  

    if(!T) return ;    

    stack s;  

    s.push(T);  

    while(!s.empty())  

    {  

        BiTree temp = s.top();  

        cout<data<<" ";  

        s.pop();  

        if(temp->rchild)  

            s.push(temp->rchild);  

        if(temp->lchild)  

            s.push(temp->lchild);  

    }  

}  

或者:

void PreOrder_Nonrecursive(BiTree T)     //先序遍歷的非遞歸  

{  

    if(!T) return ;  

    stack s;  

    while(T)          // 左子樹上的節點全部壓入到棧中  

    {  

        s.push(T);  

        cout<data<<"  ";  

        T = T->lchild;  

    }        

    while(!s.empty())  

    {          

        BiTree temp = s.top()->rchild;  // 棧頂元素的右子樹  

        s.pop();                        // 彈出棧頂元素  

        while(temp)          // 棧頂元素存在右子樹,則對右子樹同樣遍歷到最下方  

        {  

            cout<data<<"  ";  

            s.push(temp);  

            temp = temp->lchild;  

        }  

    }  

}  

以上就是二叉樹先序遍歷,經過我們圖文并茂的描述,相信大多數小伙伴都能夠理解二叉樹先序遍歷的步驟,其實,二叉樹其他遍歷方式和先序遍歷也是大同小異的,我們只要能夠熟練掌握二叉樹先序遍歷,就能舉一反三,學會二叉樹其他遍歷方式,當然,本站的數據結構和算法教程對二叉樹遍歷方式有非常詳細的講解,不需要我們過多的推導,但我們學習的時候應該更注重理解,這樣才能夠學有所思。

 

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产亚洲欧美在线视频 | 久久精品国产线看观看亚洲 | 大ji吧快给我别停受不了视频 | 日韩免费毛片 | 天天色天天射天天操 | 精彩视频一区二区三区 | 一道本不卡免费视频 | 亚洲国产精品不卡毛片a在线 | 五月综合视频 | 日本精品久久久久中文字幕 | 华人亚洲欧美精品国产 | 色在线国产 | 中文字幕视频在线 | 国产精品777 | 好吊妞视频在线观看 | 国产麻豆精品aⅴ免费观看 国产麻豆精品hdvideoss | 天堂精品高清1区2区3区 | 欧美成人午夜视频免看 | 99热这里只有精品4 99热这里只有精品5 | www.欧美成| 女性下面全部视频免费 | 女bbbxxx毛片视频 | 4hu四虎免费影院www | 亚洲图片欧美 | 中文字幕在线看视频一区二区三区 | 中文字幕2区| 看片不卡 | 欧美操穴视频 | 国产国产精品人在线视 | 亚洲第一综合网站 | 久草在线影视 | 久久综合给会久久狠狠狠 | 四虎影永久地址www 四虎影永久在线高清免费 四虎影永久在线观看精品 四虎影永久在线观看网址 四虎影院.com | 色婷婷中文网 | 国产女人视频 | 国产精品成人免费视频不卡 | 亚洲精品综合欧美一区二区三区 | 五月激情综合婷婷 | 国产成人免费网站在线观看 | 欧美毛片aaaaa片久久久久 | 欧美日韩国产在线 |