C 資料結構 二叉樹(一) 先序建立二叉樹

2021-08-10 01:16:08 字數 1488 閱讀 1386

定義:

二叉樹是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 ...