由這個修改:
二叉搜尋樹的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...