最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++樹之遍歷二叉樹實(shí)例詳解

 更新時(shí)間:2021年03月11日 11:38:47   作者:Linyiwei  
這篇文章主要給大家介紹了關(guān)于C++樹之遍歷二叉樹的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在講遍歷之前,我們要先創(chuàng)建一個(gè)樹:

#include <iostream>
using namespace std;
typedef struct node;
typedef node *tree;

struct node{
 int data;    // 結(jié)點(diǎn)數(shù)值
 tree left,right;  // 左子樹和右子樹 
};
tree bt;

遍歷二叉樹有三種方式:

先序遍歷

先序遍歷的操作如下:

  • 訪問根結(jié)點(diǎn)
  • 先序遍歷左子樹(遞歸)
  • 先序遍歷右子樹(遞歸)

二叉樹bt的先序遍歷結(jié)果:12347536

代碼如下:

void preorder(tree bt){
 if (bt){    // 判斷不為空二叉樹 
  cout << bt->data;
  preorder(bt->left); // 遞歸遍歷左子樹 
  preorder(bt->right); // 遞歸遍歷右子樹 
 }
}

中序遍歷

中序遍歷的操作如下:

  • 中序遍歷左子樹(遞歸)
  • 訪問根結(jié)點(diǎn)
  • 中序遍歷右子樹(遞歸)

二叉樹bt的中序遍歷結(jié)果:7425136

代碼如下:

void inorder(tree bt){
 if (bt){    // 判斷不為空二叉樹 
  inorder(bt->left); // 遞歸遍歷左子樹 
  cout << bt->data;
  inorder(bt->right); // 遞歸遍歷右子樹 
 }
}

后序遍歷

后序遍歷的操作如下:

  • 后序遍歷左子樹(遞歸)
  • 后序遍歷右子樹(遞歸)
  • 訪問根結(jié)點(diǎn)

二叉樹bt的后序遍歷的結(jié)果:7452631

代碼如下:

void postorder(tree bt){
  if (bt){        // 判斷不為空二叉樹 
    postorder(bt->left);  // 遞歸遍歷左子樹 
    postorder(bt->right); // 遞歸遍歷右子樹 
    cout << bt->data;
  }
}

小結(jié):我們使用遞歸的方式遍歷了二叉樹,大家仔細(xì)觀察可以發(fā)現(xiàn),先序遍歷就是先訪問根結(jié)點(diǎn),再遞歸,中序遍歷是把訪問根結(jié)點(diǎn)放中間,后續(xù)遍歷是最后訪問。

總代碼:

#include <iostream>
using namespace std;
typedef struct node;
typedef node *tree;

struct node{
  int data;        // 結(jié)點(diǎn)數(shù)值
  tree left,right;    // 左子樹和右子樹 
};
tree bt;

void preorder(tree bt){
  if (bt){        // 判斷不為空二叉樹 
    cout << bt->data;
    preorder(bt->left);  // 遞歸遍歷左子樹 
    preorder(bt->right); // 遞歸遍歷右子樹 
  }
}
void inorder(tree bt){
  if (bt){        // 判斷不為空二叉樹 
    inorder(bt->left);  // 遞歸遍歷左子樹 
    cout << bt->data;
    inorder(bt->right); // 遞歸遍歷右子樹 
  }
}
void postorder(tree bt){
  if (bt){        // 判斷不為空二叉樹 
    postorder(bt->left);  // 遞歸遍歷左子樹 
    postorder(bt->right); // 遞歸遍歷右子樹 
    cout << bt->data;
  }
}

補(bǔ)充知識(shí):

表達(dá)式:a+b*c

表達(dá)式二叉樹:

前綴表達(dá)式(波蘭式):+a*bc

中綴表達(dá)式:a+b*c/d

后綴表達(dá)式(逆波蘭式):abc*+

怎么將中綴表達(dá)式轉(zhuǎn)換為前綴表達(dá)式或后綴表達(dá)式呢?只需像前序遍歷和后序遍歷一樣遍歷表達(dá)二叉樹即可。

總結(jié)

到此這篇關(guān)于C++樹之遍歷二叉樹的文章就介紹到這了,更多相關(guān)C++遍歷二叉樹內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言單鏈表實(shí)現(xiàn)通訊錄管理系統(tǒng)

    C語(yǔ)言單鏈表實(shí)現(xiàn)通訊錄管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言單鏈表實(shí)現(xiàn)通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C++數(shù)據(jù)結(jié)構(gòu)之鏈表詳解

    C++數(shù)據(jù)結(jié)構(gòu)之鏈表詳解

    這篇文章主要介紹了C++數(shù)據(jù)結(jié)構(gòu)之鏈表的創(chuàng)建的相關(guān)資料,希望通過本文幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C++實(shí)現(xiàn)LeetCode(201.數(shù)字范圍位相與)

    C++實(shí)現(xiàn)LeetCode(201.數(shù)字范圍位相與)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(201.數(shù)字范圍位相與),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C++?AnimeGAN實(shí)現(xiàn)照片一鍵動(dòng)漫化

    C++?AnimeGAN實(shí)現(xiàn)照片一鍵動(dòng)漫化

    AnimeGAN是是由神經(jīng)網(wǎng)絡(luò)風(fēng)格遷移加生成對(duì)抗網(wǎng)絡(luò)(GAN)而成,它是基于CartoonGAN的改進(jìn),并提出了一個(gè)更加輕量級(jí)的生成器架構(gòu)。本文將介紹如何運(yùn)用AnimeGAN實(shí)現(xiàn)照片一鍵動(dòng)漫化,需要的可以參考一下
    2021-11-11
  • C\C++ 獲取當(dāng)前路徑實(shí)例詳解

    C\C++ 獲取當(dāng)前路徑實(shí)例詳解

    這篇文章主要介紹了C\C++ 獲取當(dāng)前路徑實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 關(guān)于STL中的map容器的一些總結(jié)

    關(guān)于STL中的map容器的一些總結(jié)

    對(duì)于map的學(xué)習(xí),或者說是對(duì)STL中的容器的學(xué)習(xí),要知道每種容器的實(shí)現(xiàn)原理,每種適合適合解決什么問題的,才是關(guān)鍵
    2013-09-09
  • C語(yǔ)言超全面define預(yù)處理指令的使用說明

    C語(yǔ)言超全面define預(yù)處理指令的使用說明

    C語(yǔ)言里可以用#define定義一個(gè)標(biāo)識(shí)符來表示一個(gè)常量。特點(diǎn)是:定義的標(biāo)識(shí)符不占內(nèi)存,只是一個(gè)臨時(shí)的符號(hào),預(yù)編譯后這個(gè)符號(hào)就不存在了,也不做類型定義。預(yù)編譯又叫預(yù)處理
    2022-04-04
  • C++虛函數(shù)表與類的內(nèi)存分布深入分析理解

    C++虛函數(shù)表與類的內(nèi)存分布深入分析理解

    對(duì)C++ 了解的人都應(yīng)該知道虛函數(shù)(Virtual Function)是通過一張?zhí)摵瘮?shù)表(Virtual Table)來實(shí)現(xiàn)的。簡(jiǎn)稱為V-Table。本文就將詳細(xì)講講虛函數(shù)表的原理與使用,需要的可以參考一下
    2022-08-08
  • C++函數(shù)模板與重載解析超詳細(xì)講解

    C++函數(shù)模板與重載解析超詳細(xì)講解

    模板是C++最重要的設(shè)計(jì)。這篇文章講的是函數(shù)模板,只是簡(jiǎn)單介紹模板的一些功能,關(guān)于模板的更多的內(nèi)容會(huì)在類模板中詳細(xì)介紹。文章還著重介紹了重載解析過程
    2022-08-08
  • C++實(shí)現(xiàn)推箱子功能附加回撤示例

    C++實(shí)現(xiàn)推箱子功能附加回撤示例

    本文主要介紹了C++實(shí)現(xiàn)推箱子功能附加回撤示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10

最新評(píng)論

唐海县| 宁安市| 崇文区| 婺源县| 岑巩县| 宕昌县| 龙陵县| 莱州市| 张家港市| 定安县| 徐汇区| 宿迁市| 礼泉县| 招远市| 铁岭市| 安新县| 平乐县| 辽中县| 左贡县| 曲阜市| 临安市| 廉江市| 昌平区| 遂川县| 阿城市| 华容县| 昂仁县| 秭归县| 浪卡子县| 邯郸市| 樟树市| 资兴市| 历史| 普兰县| 无为县| 吴旗县| 获嘉县| 怀集县| 勐海县| 浙江省| 宝丰县|