資料結構 二叉樹的構建及其遍歷 C 實現

2021-08-04 23:45:22 字數 1515 閱讀 2284

我們要解決的問題:

給定乙個長度為len的int型別陣列,構造一棵二叉樹,並輸出這棵樹的前中後序遍歷。

二叉樹由乙個個的節點構成,每個節點包含三個東西,分別是這個節點的資料,這個節點的左兒子的位址和右兒子的位址,所以這裡使用結構體來表示乙個節點。

所以,先寫二叉樹節點的**

struct binary_node

//這個節點的建構函式,左右兒子的位址賦初值為0(也就是null),這個節點的資料為傳過來的引數x

};

然後寫乙個二叉樹的類的宣告
class binary_tree

;

·資料結構的乙個規定:能夠在main程式裡面被呼叫的一般叫做【方法】,其他的叫做【函式】。

接下來寫binary__tree類裡面的函式和方法的實現

binary_tree::binary_tree()//這個建構函式,好像沒什麼用,留著吧,也不礙事

binary_tree::binary_tree(int *arr, int len)//這是乙個重要的建構函式

binary_node *p = root;

int tmp = arr[index++];

/*下面的這個while有兩個用處。

第一:判斷條件,去掉重複,就是說這棵樹不包含相同的元素。

第二:因為最新插入的元素只能是葉子節點,如果前面已經構造了一棵巨大的樹,

那麼我們就需要用乙個迴圈來定位到葉子節點的父節點,也就是前幾行的p。*/

while (p->data!=tmp)

}else}}

}}void binary_tree::pre_order(const binary_node *p)//前序遍歷函式

void binary_tree::pre_print()//前序遍歷方法(注意函式與方法的區別,前面講了)

void binary_tree::in_order(const binary_node *p)//中序遍歷,同理(只寫了函式,沒寫方法,我偷懶啦)

void binary_tree::post_order(const binary_node *p)//後序遍歷,同理(只寫了函式,沒寫方法,我偷懶啦)

·【訪問】的意思指的是列印出這個節點的數值

最後寫一下main函式
#include 

#include "標頭檔案.h"//包含二叉樹的實現的標頭檔案

using

namespace

std;

int main()

·*請仔細閱讀**的注釋,我所有的想法都寫在注釋裡面了。

資料結構 二叉樹的構建與遍歷

c 實現二叉樹的構建與遍歷 二叉樹資料示例 a b d c e g f 二叉樹.cpp 定義控制台應用程式的入口點。include stdafx.h include include includeusing namespace std define maxsize 100 char gnodestr...

mysql 遍歷二叉樹 資料結構 二叉樹遍歷

這篇博文主要是研究二叉樹遍歷的遞迴與非遞迴演算法,有興趣的小夥伴可以了解下!二叉樹的遞迴遍歷 深度優先遍歷 先來張圖,看看各結點遍歷時的情況 二叉樹深度優先遍歷總結 分別為第一次,第二次,第三次進入某個結點 先序遍歷 先訪問根結點,然後先序遍歷左子樹,最後先序遍歷右子樹 根 左 右 中序遍歷 先中序...

資料結構 遍歷二叉樹

資料結構實驗之二叉樹二 遍歷二叉樹 time limit 1000ms memory limit 65536kb submit statistic problem description 已知二叉樹的乙個按先序遍歷輸入的字串行,如abc,de,g,f,其中,表示空結點 請建立二叉樹並按中序和後序的方...