樹形結構是一類重要的非線性資料結構,其中以樹和二叉樹最為常用。對於每乙個結點至多只有兩課子樹的一類樹,稱其為二叉樹。二叉樹的鏈式儲存結構是一類重要的資料結構,其形式定義如下:
而二叉樹的前序、中序遍歷是非常重要的能夠訪問二叉樹所有結點的演算法,下面分別列出一種先序遍歷和兩種中序遍歷的演算法。
第一種中序遍歷的方法(演算法6.3):
第二種中序遍歷的方法(演算法6.2):
通過讀入乙個字串,建立二叉樹的演算法如下:
在本題中,將會給出乙個按照先序遍歷得出的字串,空格代表空的子節點,大寫字母代表節點內容。請通過這個字串建立二叉樹,並按照題目描述中的一種先序遍歷和兩種中序遍歷的演算法分別輸出每乙個非空節點。
輸入只有一行,包含乙個字串s,用來建立二叉樹。保證s為合法的二叉樹先序遍歷字串,節點內容只有大寫字母,且s的長度不超過100。
共有三行,每一行包含一串字元,表示分別按先序、中序、中序得出的節點內容,每個字母後輸出乙個空格。請注意行尾輸出換行。
abc de g f
a b c d e g fc b e g d f a
c b e g d f a
#include#include#include#includeusing namespace std;
const int maxn=110;
struct node;
int flag;
void in(node *&t)
else if(t=='\n')
else }
void xian(node *t)
}void zhong(node *t) }
int main()
{ flag=0;
node *t;
in(t);//建立乙個二叉樹
xian(t);//先序遍歷輸出
cout<
二叉鍊錶儲存二叉樹
鏈式儲存結構 二叉樹的鏈式儲存結構是指,用鍊錶來表示一棵二叉樹,即用鏈來指示元素的邏輯關係。其中,data域存放某結點的資料資訊 lchild與rchild分別存放指向左孩子和右孩子的指標,當左孩子或右孩子不存在時,相應指標域值為空 用符號 或null表示 利用這樣的結點結構表示的二叉樹的鏈式儲存結...
二叉鍊錶儲存二叉樹
鏈式儲存結構 二叉樹的鏈式儲存結構是指,用鍊錶來表示一棵二叉樹,即用鏈來指示元素的邏輯關係。其中,data域存放某結點的資料資訊 lchild與rchild分別存放指向左孩子和右孩子的指標,當左孩子或右孩子不存在時,相應指標域值為空 用符號 或null表示 利用這樣的結點結構表示的二叉樹的鏈式儲存結...
二叉樹儲存方式 二叉鍊錶
二叉樹一般有兩種儲存方式 1 陣列方式 2 鍊錶方式 1 陣列儲存方式 上面兩個二叉樹對應的鍊錶儲存為 我們採用層序遍歷的方式將二叉樹各個節點進行編號 這裡的編號我們是把二叉樹均看成滿二叉樹進行編號的,這樣編號的好處是方便我們根據編號輕鬆定位節點位置 並將節點資料存放在對應編號下。我們可以看出對於滿...