1.二叉排序树
二叉排序树或者是一颗空树,或者是具有以下性质的树:(1 )如果根节点的左子树不为空,则左子树的所有结点的值均小于它的根节点的值;(2 )如果它的右子树不空,右子树的节点的值都大于根节点的值;(3 )对于左右子树,也是二叉排序树。
二叉排序树又称二叉查找树,查找算法很简单,从根节点开始对比,如果要查找的值e和根节点g的值相等,返回指向根节点的指针;如果e < g,就递归在左子树查找;如果e > g,就递归在右子树查询。如果查找到叶子结点还未找到,说明查找失败。
二叉排序树是一种动态树。树的结构通常不是一次生成的,而是在查找的过程中,当树中不存在所要查找的值时,将对应的值的节点插入。显然新插入的节点是叶子结点。
bool searchBST(BTree *T, BTree *p, int key){
if(!T){
return false;
}
p = T;
if(key == T -> key)
return true;
if(key < T -> key)
searchBST(T -> left, p, key);
else
searchBST(T -> right, p, key);
}
void insertBST(BTree *T, int key){
BTree *p = NULL;
if(!searchBST(T, p, key)){
BTree *q = new BTree(key);