二叉搜尋樹(包含重複資料)的C 實現

2021-10-08 10:17:16 字數 1243 閱讀 1456

由這個修改:

二叉搜尋樹的c++實現_qq_32523711的部落格-csdn部落格

刪除的時候我是遞迴刪除的(感覺有點偷懶)

//二叉搜尋樹結點型別

templatestruct bstnode

bstnode(const t d, bstnode* l = null, bstnode* r = null) : data(d), left(l), right(r){}

};//二叉搜尋樹

templateclass bst

// 析構

~bst()

// 插入

bool insert(t x)

// 刪除

bool remove(t x)

// 搜尋

bool search(t x)

// 中序遍歷

void inorder()

protected:

// 析構函式

void destroy(bstnode* &root)

// ptr為根的二叉搜尋樹中插入值為a的結點

bool insert(const t& a, bstnode* &ptr)

else if(a < ptr->data)//小於,插入左子樹

insert(a, ptr->left);

else if(a > ptr->data)// 大於,插入右子樹

insert(a, ptr->right);

else //已在樹中,不插入

return false;

} // ptr為根的二叉搜尋樹中刪除值為a的結點

bool remove(const t& a, bstnode* &ptr)

// 2、不同時有左右子樹

// 3、為葉子結點

else

} // ptr為根的二叉樹中搜尋值為x的結點

bstnode* search(t x, bstnode* ptr)

//中序遍歷

void inorder(bstnode* root)

}private:

bstnode* root;

};

測試cpp:

#include #include "bsearchtree.h"

using namespace std;

int main()

} return 0;

}

演算法10 二叉搜尋樹存在重複資料插入的實現

當用tree insert將n個具有相同關鍵字的資料項插入到一棵初始為空的二叉查詢樹中時,該演算法的漸近效能如何?我們可以對tree insert做一些改進,即在第5行的前面測試key z key x 在第11行的前面測試key z key y 如果等式成立,我們對下列策略中的某一種加以實現。對每一...

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...