#ifndefSORTBTREE_H
#defineSORTBTREE_H
#include"BTreeNode.h"
#include
#include
template
classSortBTree
{
public:
SortBTree(T* p , int n);
const T& max()const; // return themaximum
const T& min()const; // return theminimum
BTreeNode
//delete the node of data, if data is notexist, throw error
void delete_data(const T& data) {delete_data(root,data); };
void insert_data(const T& data) { insert_data(root,data);};
BTreeNode
void display()const { display(root,visit); cout < protected: static void insert_data(BTreeNode static BTreeNode static void delete_node(BTreeNode static void delete_data(BTreeNode static void display(BTreeNode private: BTreeNode }; //constructionfunction template SortBTree { root = new BTreeNode root = NULL; //注意这行很必要,BTreeNode没有默认设置为NULL的构造函数 for(int i = 0; i != n; ++i) { insert_data(root,p[i]); } } //insert a new data template voidSortBTree { if(rt == NULL) { rt = newBTreeNode //rt->data = ndata; //这三条语句不等于上面那条 //rt->lchild = NULL; //用这三条语句是错的 //rt->rchild = NULL; } else if(rt->data == ndata) return; else if(rt->data > ndata)insert_data(rt->lchild, ndata); else insert_data(rt->rchild, ndata); } //delete a node from tree(improved) // 如果p没有左子树,则让p的右子树的根代替p即可。 // 如果p有左子树,找出左子树中结点值最大的节点temp(最右下角的结点,也是中序遍历最后一个结点, 他没有右子树) // 用temp的结点值替换下p的结点值 // 删除temp(因为temp的右子树为空,从而直接用其左子树根代替本身就可达到删除结点的目的) // 注: 一般的方法用temp替换p,但是这样可能导致树很不平衡。
① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;
② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。