二叉搜尋樹的c 實現

2021-07-02 19:14:16 字數 1720 閱讀 8726

#includeusing namespace std;

templateclass bstree;

template class bstnode

bstnode(t d, bstnode* l=null, bstnode* r=null):data(d),leftchild(l),rightchild(r)

{} bstnode(bstnode* l=null, bstnode* r=null):data(t()),leftchild(l),rightchild(r)

{} ~bstnode()

{}private:

bstnode* leftchild;

bstnode* rightchild;

t data;

};templateclass bstree

bstree(t value) }

~bstree()

{}public:

void printtree()const

bool search(const t x)

void insert(const t& x)

void makeempty()

bool remove(const t x)

t max()const

t min()const

size_t getsize()

void copy(bstree& p)

protected:

void copy(bstnode* &t, bstnode* &p) //用p給t拷貝

else

}} size_t getsize(bstnode* t)const

bstnode* min(bstnode* t)const

bstnode* max(bstnode* t)const

bool remove(bstnode* & t, const t x)

else

}return false;

} void makeempty(bstnode* &t) }

void printtree(bstnode* t)const

}bool insert(bstnode* & t, const t& x)

else if(t->data > x)

insert(t->leftchild, x);

else if(t->data < x)

insert(t->rightchild , x);

else //插入元素與樹中某個節點相等時,不插入

return false;

} bstnode* search(bstnode* t, const t x)

return null;

}private:

bstnode* root;

t refvalue; //結束標誌

};void main()

; bstreebst;

for(int i=0; i<10; ++i)

bst.insert(a[i]);

bst.printtree();

cout// bst1.printtree();

coutbst.copy(bst1);

bst.printtree();

}

遞迴的使用要理清思路,刪除乙個節點時要考慮多種情況,指標的使用要明確。

c 實現二叉搜尋樹

h部分 ifndef binaryserchtree bst h define binaryserchtree bst h include template class bst 宣告 template class element template class bstnode template cla...

c 實現二叉搜尋樹

c 實現二叉搜尋樹 include include using namespace std struct node class tree tree tree void tree creattree node rt,int n if rt data n else else void tree leve...

二叉搜尋樹的C 實現

參考 標頭檔案 ifndef debug lrn treenode h define debug lrn treenode h void echo int i class treenode void inorder tree walk treenode x void preorder tree wa...