定義:
二叉樹是n個節點的有限集合,該集合或者為空集( 稱為空二叉樹 ),或者由乙個根節點和兩棵互不相交的的二叉樹組成,這兩棵二叉樹分別稱為根節點的左子樹和右子樹。
本次二叉樹知識體系的總結秉承的思想是:我們希望 二叉樹類bitree,它的私有成員能體現二叉樹本身的性質,它的公有成員能提供給使用者一系列對二叉樹的操作方法。
bitree.h 標頭檔案定義如下:
typedef char item; //樹中資料型別
typedef struct node //每個節點包含乙個資料,乙個左指標,乙個右指標
bitnode;
class bitree
;
bitree.cpp 檔案定義如下:
#include "bitree.h"
#include
#include
using
namespace
std;
static
int leftdepth = 0; //左深度計數器
static
int rightdepth = 0; //右深度計數器
//函式原型
//建構函式
//初始化二叉樹,根節點指向空,樹大小為0,深度為0
bitree::bitree()
//操作: 獲取二叉樹根節點資料
void bitree::getbitroot()
//操作: 獲取二叉樹節點數目
void bitree::getbitnum()
//操作: 獲取二叉樹的深度
void bitree::getbitdepth()
//操作: 先序建立二叉樹
//操作前:無引數,輸入#表示為空
//操作後:建立完整的樹並返回樹的根節點
bitnode* bitree::createbitree()
this->depth = (leftdepth > rightdepth ? leftdepth : rightdepth) + 1;
return ptree; //最終返回樹的根節點
}
usebitree.cpp 檔案定義如下:
#include "bitree.h"
#include
using
namespace
std;
int main()
輸入二叉樹如下圖所示
執行結果
二叉樹建立(先序)
建立二叉樹可根據輸入乙個串先序 中序或後序建立,如本篇中以1 2 4 1 1 1 3 5 1 1 1為例,數字 1為空結點,先序 中序 後序沒什麼太大區別,僅僅時對結點資料賦值的時間不同,建立運用遞迴思想。遍歷可先 中 後序,也可層序遍歷。層序遍歷可以運用佇列,每pop出乙個資料,push進相應的左...
二叉樹 二叉樹遍歷 根據先序建立二叉樹
題目描述 編乙個程式,讀入使用者輸入的一串先序遍歷字串,根據此字串建立乙個二叉樹 以指標方式儲存 例如如下的先序遍歷字串 abc de g f 其中 表示的是空格,空格字元代表空樹。建立起此二叉樹以後,再對二叉樹進行中序遍歷,輸出遍歷結輸入 輸入包括1行字串,長度不超過100。輸出 可能有多組測試資...
資料結構 線索二叉樹 先序
4.4 尋找先序後繼 4.5 先序遍歷 4.6 main函式 4.7 測試 5.小結 include include define elemtype char 線索二叉樹結點型別定義 typedef struct threadnode threadnode,threadtree 函式宣告 void ...