更新时间:2015-11-18 18:52:10浏览次数:1+次
学习二叉搜索树的前提是了解二叉树,二叉树的知识点前面更新过很多,这里就不多说了。
下面直接讲讲二叉搜索树的定义:
假定所有结点的关键字值各不相同,二叉搜索树或者是一棵空二叉树,或者是具有下列性质的二叉树:
(1)若左子树不空,则左子树上所有结点的关键字值均小于根结点关键字值;
(2)若右子树不空,则右子树上所有结点的关键字值均大于根结点关键字值;
(3)左、右子树也分别是二叉搜索树。
注意前提都是本身是一个二叉树。
下面这个树虽然长得丑了点,但是也是一个标准的二叉搜索树
细心的读者可能发现:若以中序遍历一棵二叉搜索树,将得到一个以关键字值递增排列的有序序列。当然你的发现没错,这就是一个二叉搜素树的性质
二叉搜索树类
template<class T>
class BSTree:public DynamicSet<T>
{
public:
BSTree(){ root=NULL; }
ResultCode Search(T & x) const;
ResultCode Insert(T & x);
ResultCode Remove(T & x);
…
protected:
BTNode<T>* root;
private:
ResultCode Search(BTNode<T> *p, T & x)const;
…
};
相关资讯