动态查找-二叉排序树和平衡二叉树

本文介绍了二叉排序树(二叉查找树),包括其定义、查找算法和动态插入过程。接着,详细讲解了平衡二叉树——AVL树的概念,强调了其平衡性质和平衡因子。最后,讨论了四种常见的失衡情况及其对应的旋转调整策略:LL型、RR型、LR型和RL型。
摘要由CSDN通过智能技术生成

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);
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值