C++樹之遍歷二叉樹實例詳解
在講遍歷之前,我們要先創(chuàng)建一個樹:

#include <iostream>
using namespace std;
typedef struct node;
typedef node *tree;
struct node{
int data; // 結(jié)點數(shù)值
tree left,right; // 左子樹和右子樹
};
tree bt;
遍歷二叉樹有三種方式:
先序遍歷
先序遍歷的操作如下:
- 訪問根結(jié)點
- 先序遍歷左子樹(遞歸)
- 先序遍歷右子樹(遞歸)
二叉樹bt的先序遍歷結(jié)果:12347536
代碼如下:
void preorder(tree bt){
if (bt){ // 判斷不為空二叉樹
cout << bt->data;
preorder(bt->left); // 遞歸遍歷左子樹
preorder(bt->right); // 遞歸遍歷右子樹
}
}
中序遍歷
中序遍歷的操作如下:
- 中序遍歷左子樹(遞歸)
- 訪問根結(jié)點
- 中序遍歷右子樹(遞歸)
二叉樹bt的中序遍歷結(jié)果:7425136
代碼如下:
void inorder(tree bt){
if (bt){ // 判斷不為空二叉樹
inorder(bt->left); // 遞歸遍歷左子樹
cout << bt->data;
inorder(bt->right); // 遞歸遍歷右子樹
}
}
后序遍歷
后序遍歷的操作如下:
- 后序遍歷左子樹(遞歸)
- 后序遍歷右子樹(遞歸)
- 訪問根結(jié)點
二叉樹bt的后序遍歷的結(jié)果:7452631
代碼如下:
void postorder(tree bt){
if (bt){ // 判斷不為空二叉樹
postorder(bt->left); // 遞歸遍歷左子樹
postorder(bt->right); // 遞歸遍歷右子樹
cout << bt->data;
}
}
小結(jié):我們使用遞歸的方式遍歷了二叉樹,大家仔細觀察可以發(fā)現(xiàn),先序遍歷就是先訪問根結(jié)點,再遞歸,中序遍歷是把訪問根結(jié)點放中間,后續(xù)遍歷是最后訪問。
總代碼:
#include <iostream>
using namespace std;
typedef struct node;
typedef node *tree;
struct node{
int data; // 結(jié)點數(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;
}
}
補充知識:
表達式:a+b*c
表達式二叉樹:

前綴表達式(波蘭式):+a*bc
中綴表達式:a+b*c/d
后綴表達式(逆波蘭式):abc*+
怎么將中綴表達式轉(zhuǎn)換為前綴表達式或后綴表達式呢?只需像前序遍歷和后序遍歷一樣遍歷表達二叉樹即可。
總結(jié)
到此這篇關(guān)于C++樹之遍歷二叉樹的文章就介紹到這了,更多相關(guān)C++遍歷二叉樹內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++數(shù)據(jù)結(jié)構(gòu)之鏈表詳解
這篇文章主要介紹了C++數(shù)據(jù)結(jié)構(gòu)之鏈表的創(chuàng)建的相關(guān)資料,希望通過本文幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2021-08-08
C++實現(xiàn)LeetCode(201.數(shù)字范圍位相與)
這篇文章主要介紹了C++實現(xiàn)LeetCode(201.數(shù)字范圍位相與),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08
C++虛函數(shù)表與類的內(nèi)存分布深入分析理解
對C++ 了解的人都應(yīng)該知道虛函數(shù)(Virtual Function)是通過一張?zhí)摵瘮?shù)表(Virtual Table)來實現(xiàn)的。簡稱為V-Table。本文就將詳細講講虛函數(shù)表的原理與使用,需要的可以參考一下2022-08-08

