C 使用class實現二叉樹,及其七種遍歷方式

2021-09-18 03:48:39 字數 1315 閱讀 2979

部分實現方式有些非原創,參考了他人思路。

使用c++中的類實現了二叉樹,並實現了風格統一的三種遞迴遍歷、三種迭代遍歷,以及層序遍歷。

水平有限,實現比較簡化。

//binarytree

#include#include#includeusing namespace std;

class btnode

btnode(double m_value=0.0)

~btnode()

void setleft(double m_value)

void setright(double m_value)

// int printself();

//三種非遞迴遍歷(棧)

int prego1();

int migo1();

int postgo1();

//層序遍歷 (佇列)

int levelgo();

//三種遞迴遍歷

int prego2();

int migo2();

int postgo2();

};int btnode::prego1()

if(visited)

} return 0;

}int btnode::migo1()

if(visited)

} return 0;

}int btnode::postgo1()

if(visited)

} return 0;

}int btnode::levelgo()

if(p->right!=null) }}

int btnode::prego2()

if(this->right!=null)

return 0;

}int btnode::migo2()

cout<

return 0;

}int btnode::postgo2()

if(this->right!=null)

cout<

root->setright(c);

root->left->setleft(d);

root->left->setright(e);

cout<

cout<

cout<

cout<

cout<

cout<

cout<

}

執行效果:

二叉樹及其實現

樹概念 節點n1到nk的路徑 為節點n1 n2 nk的乙個序列,是的對於1 i 路徑的長 路徑上邊的條數,如上面為k 1 ni的深度 從根到ni的唯一路徑的長。根的深度為0 ni的高度 從ni到一片葉子的最長路徑的長。樹葉的高度為0,一棵樹的高度等於根的高,通常定義空樹的高為 1 二叉樹的節點宣告 ...

二叉樹及其應用 二叉樹遍歷

給定二叉樹的廣義表表示,構造二叉樹並輸出二叉樹的四種遍歷順序。輸入說明 輸入僅一行,該行僅由 以及大小寫字元構成的二叉樹的廣義表表示,字串長度不超過100。輸出說明 在接下來的四行中依行輸出二叉樹的四種遍歷 輸入樣列 a b d,c e,f h 輸出樣列 abdcefh dbaecfh dbehfc...

二叉樹及其應用 二叉樹建立

給定二叉樹的資料型別如下 typedef char element struct node typedef struct node btnode typedef struct node btree 二叉樹建立i 完成btree create btree char s 函式,該函式由字串s建立一顆二叉...