二叉樹 排序二叉樹的簡單實現

2021-06-17 01:04:43 字數 2121 閱讀 1168

二叉樹-排序二叉樹

#include

using namespace std;

二叉樹的節點

date : 資料

left :指向二叉樹的左子樹

right:指向二叉樹的右子樹

template

struct node

template

class btree

public:

btree():root(null),count(null){}

node* & insert(node* &t,const t & e);

node* & sel(node* &t,const t& e);

voiddisplay(node* &t);

int  hight(node* t);

boolclear(node* &t);

node* & getroot();

~btree()

this->clear(this->root);

private:

node* root;     //根節點指標

intcount;

插入資料

中序遍歷

template

node* &btree::insert(node* &t,const t & e)

if(t==null)

node* p=new node;

p->date=e;

t=p;

count++;

returnt;

else

if(edate)             //如果e小於t節點的資料,遞迴往t的左子樹插,反正向右子樹

insert(t->left,e);  

else

insert(t->right,e);

查詢元素 e

中序遍歷

template

node* &btree::sel(node* &t,const t& e)

if(t==null)

returnt;

else

if(e==t->date)

returnt;

else

if(edate)      //e小於t的資料,則向t的左子樹查詢,反之向t右子樹查詢

sel(t->left,e);

else

sel(t->right,e);

先序遍歷

template

void btree::display(node* &t)

if(t==null)

return;

else

display(t->left);

coutdisplay(t->right);

template

int btree::hight(node*t)

if(t==null)

return0;

else

intlh=hight(t->left);

intrh=hight(t->right);

return1+(lh>rh?lh:rh);

清空二叉樹

後序遍歷

template

bool btree::clear(node*& t)

if(t==null)

returnfalse;

else

clear(t->left);

clear(t->right);

delete t;

t=null;

returntrue;

template

node* &btree::getroot()

returnroot;

int main()

btreet;

t.insert(t.getroot(),50);

t.insert(t.getroot(),40);

t.insert(t.getroot(),45);

t.insert(t.getroot(),60);

t.display(t.getroot());

node* p;

p=t.sel(t.getroot(),45);

cout<<"查詢樹查詢數值:"return0;

二叉樹,排序二叉樹

說到二叉樹,這可是資料結構裡面的非常重要的一種資料結構,二叉樹是樹的一種,本身具有遞迴性質,所以基於二叉樹的一些演算法很容易用遞迴演算法去實現。作為一種非線性結構,比起線性結構還是相對複雜的,很多人甚至看不懂演算法的意思,不能理解。其實一開始接觸這些東西還是挺暈的,不過你多看幾遍,上機實現可能你就會...

排序二叉樹or搜尋二叉樹or查詢二叉樹

排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...

排序二叉樹or搜尋二叉樹or查詢二叉樹

排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...