亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java二叉樹(shù)的遍歷思想及核心代碼實(shí)現(xiàn)

 更新時(shí)間:2019年01月03日 15:13:25   作者:sdr_zd  
今天小編就為大家分享一篇關(guān)于Java二叉樹(shù)的遍歷思想及核心代碼實(shí)現(xiàn),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧

二叉樹(shù)在計(jì)算機(jī)中的存儲(chǔ)方式往往線性結(jié)構(gòu),線性存儲(chǔ)分為順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ),將二叉樹(shù)按層序編號(hào)。

順序結(jié)構(gòu):按編號(hào)的順序進(jìn)行存儲(chǔ),對(duì)于完全二叉樹(shù)而言,順序存儲(chǔ)可以反映二叉樹(shù)的邏輯,但是對(duì)于大多數(shù)的二叉樹(shù)則無(wú)法反映其邏輯關(guān)系,不過(guò)可以用 ^ 來(lái)代替不存在的結(jié)點(diǎn),但是如果這個(gè)樹(shù)是一個(gè)右斜樹(shù),就非常浪費(fèi)存儲(chǔ)空間。所以二叉樹(shù)的存儲(chǔ)形式一般為鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。

鏈?zhǔn)酱鎯?chǔ):每一個(gè)結(jié)點(diǎn)都分有一個(gè)數(shù)據(jù)域(data)和兩個(gè)指針域(lchild和rchild),指針域分別指向左孩子和右孩子,若為空則為null。遍歷方式有四種:前序遍歷、中序遍歷、后序遍歷及層序遍歷,前三種遍歷方式采用遞歸的思想進(jìn)行遍歷。

為方便理解,畫(huà)一個(gè)樹(shù)并結(jié)合代碼

前序遍歷:若二叉樹(shù)為空則返回null,否則先訪問(wèn)根節(jié)點(diǎn)然后遍歷左子樹(shù),再遍歷右子樹(shù),如圖:ABDGHCEIF

代碼如下:

void PreOrderTraverse(BiTree T) {
 if(T == NULL) /*為空返回*/
 return;
 printf("%c",T->data); /*輸出該結(jié)點(diǎn)的信息*/
 PreOrderTraverse(T->lchild); /*遍歷左子樹(shù)*/
 PreOrderTraverse(T->rchild); /*遍歷右子樹(shù)*/
}

中序遍歷:若二叉樹(shù)為空則返回null,否則從根節(jié)點(diǎn)出發(fā)訪問(wèn)左子樹(shù),然后訪問(wèn)根結(jié)點(diǎn),最后訪問(wèn)右子樹(shù),如圖:GDHBAEICF

代碼如下:

void InOrderTraverse(BiTree T) {
 if(T == NULL) /*為空返回*/
 return;
 InOrderTraverse(T->lchild); /*遍歷左子樹(shù)*/
 printf("%c",T->data); /*輸出該結(jié)點(diǎn)的信息*/
 InOrderTraverse(T->rchild); /*遍歷右子樹(shù)*/
}

后序遍歷:若二叉樹(shù)為空則返回null,否則以先葉子后結(jié)點(diǎn)的方式進(jìn)行訪問(wèn)最后到根結(jié)點(diǎn)遍歷結(jié)束,如圖:GHDBIEFCA

代碼如下:

void PostOrderTraverse(BiTree T) {
 if(T == NULL) /*為空返回*/
 return;
 PostOrderTraverse(T->lchild); /*遍歷左子樹(shù)*/
 PostOrderTraverse(T->rchild); /*遍歷右子樹(shù)*/
 printf("%c",T->data); /*輸出該結(jié)點(diǎn)的信息*/
}

層序遍歷:若二叉樹(shù)為空則返回null,否則從第一層開(kāi)始進(jìn)行訪問(wèn),如圖:ABCDEFGHI,按編號(hào)進(jìn)行輸出或操作即可

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

  • Spring中filter過(guò)濾器的定義方法

    Spring中filter過(guò)濾器的定義方法

    這篇文章主要介紹了Spring中filter過(guò)濾器的定義方法,Filter 程序是一個(gè)實(shí)現(xiàn)了特殊接口的 Java 類,與 Servlet 類似,也是由 Servlet 容器進(jìn)行調(diào)用和執(zhí)行的,需要的朋友可以參考下
    2023-08-08
  • 高斯混合模型與EM算法圖文詳解

    高斯混合模型與EM算法圖文詳解

    高斯模型就是用高斯概率密度函數(shù)(正態(tài)分布曲線)精確地量化事物,將一個(gè)事物分解為若干的基于高斯概率密度函數(shù)(正態(tài)分布曲線)形成的模型
    2021-08-08
  • MyBatis-Plus介紹及Spring Boot 3集成指南

    MyBatis-Plus介紹及Spring Boot 3集成指南

    本文介紹了MyBatis-Plus的基本特性及其與Spring Boot 3的集成步驟,通過(guò)使用MyBatis-Plus,開(kāi)發(fā)者可以快速地搭建和開(kāi)發(fā)數(shù)據(jù)訪問(wèn)層,同時(shí)提高代碼質(zhì)量和開(kāi)發(fā)效率,感興趣的朋友一起看看吧
    2024-05-05
  • SpringBoot集成screw實(shí)現(xiàn)數(shù)據(jù)庫(kù)文檔生成的代碼示例

    SpringBoot集成screw實(shí)現(xiàn)數(shù)據(jù)庫(kù)文檔生成的代碼示例

    數(shù)據(jù)庫(kù)設(shè)計(jì)文檔是項(xiàng)目技術(shù)文檔的重要組成部分,Screw 是一款開(kāi)源的數(shù)據(jù)庫(kù)文檔生成工具,它支持多種數(shù)據(jù)庫(kù)類型,并能生成豐富格式的文檔,本文將通過(guò)一個(gè)實(shí)際的例子,展示如何使用 Spring Boot 集成 Screw 生成數(shù)據(jù)庫(kù)設(shè)計(jì)文檔
    2024-07-07
  • Mybatis是這樣防止sql注入的

    Mybatis是這樣防止sql注入的

    本文詳細(xì)講解了Mybatis是如何防止sql注入的,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值。需要的朋友可以收藏下,方便下次瀏覽觀看
    2021-12-12
  • java String類常用方法練習(xí)小結(jié)

    java String類常用方法練習(xí)小結(jié)

    本文主要介紹了java String類常用方法的例子,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • 詳解Spring注解--@Autowired、@Resource和@Service

    詳解Spring注解--@Autowired、@Resource和@Service

    本篇文章主要介紹最重要的三個(gè)Spring注解,也就是@Autowired、@Resource和@Service,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-05-05
  • Spring中ContextLoaderListener監(jiān)聽(tīng)詳解

    Spring中ContextLoaderListener監(jiān)聽(tīng)詳解

    這篇文章主要介紹了Spring中ContextLoaderListener監(jiān)聽(tīng)詳解,SpringMVC啟動(dòng)時(shí)會(huì)啟動(dòng)WebApplicationContext類型的容器,并且會(huì)調(diào)用之前分析的refresh方法,需要的朋友可以參考下
    2024-01-01
  • Jenkins安裝和插件管理配置入門(mén)教程

    Jenkins安裝和插件管理配置入門(mén)教程

    這篇文章主要介紹了Jenkins安裝和插件管理知識(shí),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • SpringBoot中的定時(shí)任務(wù)和異步調(diào)用詳解

    SpringBoot中的定時(shí)任務(wù)和異步調(diào)用詳解

    這篇文章主要介紹了SpringBoot中的定時(shí)任務(wù)和異步調(diào)用詳解,SpringBoot 定時(shí)任務(wù)是一種在SpringBoot應(yīng)用中自動(dòng)執(zhí)行任務(wù)的機(jī)制,通過(guò)使用Spring框架提供的@Scheduled注解,我們可以輕松地創(chuàng)建定時(shí)任務(wù),需要的朋友可以參考下
    2023-10-10

最新評(píng)論