二叉樹的建立和遍歷 C 實現

2021-10-01 18:31:44 字數 1707 閱讀 2907

二叉樹是一顆樹,其中每個節點都不能有多於2個的子樹,一般會有左子樹和右子樹,兩者均可能為空。

二叉樹實際上是圖。

建立樹之前需要先宣告乙個樹的結點。

//宣告樹結點

typedef struct node treenode;

接下來宣告乙個二叉樹類,包括有二叉樹的建立和遍歷等操作。

class bintree

;

inserttreenode()函式將節點值作為輸入,在函式體中先宣告乙個樹節點,申請相應的記憶體空間,建立出來以後讓左右子樹為null (讓指標初始化的時候指向null是乙個很好的習慣)。如果樹的根節點為空,則將當前樹節點作為根節點,否則按照約束條件(左子樹 < 父節點 < 右子樹)來插入樹節點,判斷左右子樹是否為空,如果為空,則將當前樹節點作為左子樹或右子樹根節點。

void bintree::createtree() 

cout << "二叉樹構建完畢!" << endl;

}void bintree::inserttreenode(char ele)

else

else

}else//否則就進右子樹

else

}}

} return;

}

(1)前序遍歷。前序遍歷按照採用遞迴的方法來遍歷二叉樹,遵循「根->左->右」的遍歷順序,遍歷函式將樹的根節點作為輸入,遞迴遍歷。

//前序遍歷:根左右

void bintree::preorderbintree(treenode *root)

}void bintree::preorderbinarytree()

(2)中序遍歷。中序遍歷按照採用遞迴的方法來遍歷二叉樹,遵循「左->根->右」的遍歷順序,遍歷函式將樹的根節點作為輸入,遞迴遍歷。

//中序遍歷:左根右

void bintree::inorderbintree(treenode *root)

}void bintree::inorderbinarytree()

(3)後序遍歷。後序遍歷按照採用遞迴的方法來遍歷二叉樹,遵循「左->右->根」的遍歷順序,遍歷函式將樹的根節點作為輸入,遞迴遍歷。

//後序遍歷:左右根

void bintree::postorderbintree(treenode *root)

}void bintree::postorderbinarytree()

int main()
構建的二叉樹,如圖所示:

輸入:c b d a

則,執行結果如下圖所示:

(1) 在vs專案中,類的定義和成員函式實現分離的時候,除了包含.**件外,還要將所有函式的實現均放在.cpp檔案中,包括建構函式和析構函式。

(2) 在此實現二叉樹的小專案練習過程中,自己重溫了c++的語法和部分資料結構演算法,溫故而知新。

(3) 其他,參考部落格:

二叉樹建立和遍歷 C

題目描述 編乙個程式,讀入使用者輸入的一串先序遍歷字串,根據此字串建立乙個二叉樹 以指標方式儲存 例如如下的先序遍歷字串 abc de g f 其中 表示的是空格,空格字元代表空樹。建立起此二叉樹以後,再對二叉樹進行中序遍歷,輸出遍歷結果。輸入描述 輸入包括1行字串,長度不超過100。輸出描述 可能...

二叉樹建立和遍歷

二叉樹建立遍歷規則 1.先序 根 左 右 2.中序 左 根 右 3.後序 左 右 根 二叉樹定義和輔助函式如下 struct node void visit int data int indata 先序建立二叉樹 struct node createbitree 先序建立乙個二叉樹 return t...

二叉樹建立和遍歷

include include 帶返回值建立二叉樹 最簡單方法 節點資料結構 struct bs node typedef struct bs node tree tree head,p,root 建立二元查詢樹 有返回值的可以不傳參 沒有的話如何傳參 輸入0代表到了某個葉子節點 tree crea...