二叉排序树,也称二叉搜索树,是指对于二叉树的所有结点,其左子树全部结点值小于该结点的值,右子树全部结点的值大于该结点的值。因此当我们中序遍历一棵二叉排序树时,得到的序列是一个递增序列。
注意:二叉排序树中没有相等的两个元素。
1.二叉排序树的插入
将一个元素(保证与树中元素不等)插入一棵二叉排序树时,根据二叉排序树的特征,将其与根结点比较,小于根结点插入左子树,并继续与根结点的左孩子比较直到到达叶子结点,插入。如果大于根结点则在右子树中做相同的处理。
void CreateBiSortTree(BiTreeNode* &T,int x)//将x插入二叉排序树
{
if(T==NULL)//树为空,则建立根节点
{
BiTreeNode *p=new BiTreeNode;
p->value=x;
p->lchild=NULL;
p->rchild=NULL;
T=p;
}
else
{
if(x<T->value) CreateBiSortTree(T->lchild,x);//x小于T,放左边
if(x>T->value) CreateBiSortTree(T->rchild,x);//x大于T,放右边
}
}
2.二叉排序树的遍历
遍历方式与二叉树一样http://blog.csdn.net/yebanxin/article/details/52139030
3.二叉排序树的判断
对普通的二叉树,如果保证对每个结点,其左孩子小于根结点,右孩子大于根结点,那么可以确定它是二叉排序