資料結構 二叉樹的實現(C )

2021-07-04 22:51:14 字數 1932 閱讀 7126

mi_tree測試資料:

mi_tree實現:

#include "stdafx.h"

#include using namespace std;

//二叉樹:遞迴實現的二叉樹。萬能的遞迴。

class mi_tree

element* pleft;

element* pright;

char data;

};public:

mi_tree()

//前序輸出二叉樹

void printnlr(element*);

//中序輸出二叉樹

void printlnr(element*);

//後序輸出二叉樹

void printlrn(element*);

//輸出葉結點數量

int getleafscount(element*);

//輸出樹的高度

int gettreeheight(element *);

//前序建立二叉樹

element* createtreewithnlr();

//樹的size

inline int gettreesize()

int size;

element* root;

};mi_tree::element* mi_tree::createtreewithnlr()

else

root = e;

return e;

}void mi_tree::printnlr(element* _e)

}void mi_tree::printlnr(element* _e)

}void mi_tree::printlrn(element *_e)

}int mi_tree::gettreeheight(element *_e)

int l = gettreeheight(_e->pleft);

int r = gettreeheight(_e->pright);

return l>r ? (l + 1) : (r + 1);

}int mi_tree::getleafscount(element *_e)

if (0 == _e->pleft && 0 == _e->pright)

int i = getleafscount(_e->pleft);

int j = getleafscount(_e->pright);

return i + j;

}

mi_list測試:

void testtree() {

cout << "mi_tree測試:請輸入擴充套件二叉樹,#為結束結點'。" << endl;

mi_tree tree;

tree.createtreewithnlr();

cout << "前序輸出二叉樹:" << endl;

tree.printnlr(tree.root);

cout << endl;

cout << "中序輸出二叉樹:" << endl;

tree.printlnr(tree.root);

cout << endl;

cout << "後序輸出二叉樹:" << endl;

tree.printlrn(tree.root);

cout << endl;

cout << "root節點值:" << tree.root->data << endl;

cout << "樹的size:" << tree.size << endl;

cout <

cout <

資料結構C 實現 二叉樹

adt btree btnode const t x btnode const t x,btnode l,btnode r 三個資料成員 t element btnode lchild,rchild 二叉樹類包含唯一的資料成員,它是指向乙個二叉鍊錶根結點的指標root 二叉樹類 先建立二叉樹結點類 ...

資料結構的C實現 二叉樹

二叉樹及其遞迴和非遞迴遍歷 include include define maxkey 100 define ok 1 typedef char elemtype typedef struct node node 二叉樹節點 遞迴先序遍歷 void preorder r node tree 遞迴中序...

資料結構 二叉樹的實現

描述 構造乙個二叉樹類,實現建立二叉樹和對二叉樹進行前序 中序 後序遍歷 輸入 擴充套件的前序序列.在一棵樹處理結束後,根據響應判斷是否處理下一棵樹 輸出 前序 中序 後序 樣例輸入 ab c yabc n樣例輸出 abcbac bcaabc cbacba include using namespa...