美文网首页
二叉查找树(二)

二叉查找树(二)

作者: WOODS_BANGZHU | 来源:发表于2022-02-07 13:02 被阅读0次

05选择操作

排名select:找出排名为k的键

左子树中的结点数t大于k,那么我们就继续(递归地)在左子树中查找排名为k的键;

如果t等于k,我们就返回根结点中的键;

如果t小于k,我们就(递归地)在右子树中查找排名为(k-t-1)的键。

    // 返回排名为K的节点
    Node* select(Node* x, const int& k)
    {
        if (x == nullptr) return nullptr;
        int t = size(x->_left);
        if (t > k) return select(x->_left, k);
        else if (t < k) return select(x->_right, k-t-1);
        else return x;
    }

06排名操作

选择rank:找出小于指定键的键的数量

如果给定的键和根节点的键相等,返回左子树中节点总数t

如果给定的键小于根节点,返回该键在左子树中的排名;

如果给定的键大于根节点,返回值为t+1+在右子树中的排名

    // 返回以x为根节点的子树中小于key的键的数量
    int rank(const K& key, Node* x)
    {
        if (x == nullptr) return 0;
        int cmp = compareTo(key, x->_key);
        if (cmp < 0) return rank(key, x->_key);
        else if (cmp > 0) return 1 + size(x->_left) + rank(key, x->_right);
        else return size(x->_left);
    }

相关文章

  • 极客时间数据结构与算法之美笔记25~26

    二叉树到二叉查找树,是为了查找数据的效率接近logN。 二叉查找树到平衡二叉查找树,是为了防止二叉查找树沦为链表。...

  • 二叉查找树

    1)二叉查找树是什么?2)二叉查找树的插入、删除、查找?3)Go代码实现 一、二叉查找树是什么?二叉查找树(BST...

  • 红黑树

    红黑树的本质就是一棵二叉查找树,所以先从二叉查找树来了解起。 二叉查找树 二叉查找树又称有序二叉树,具有以下特性:...

  • 99-数据结构和算法

    难点:二叉树的遍历 红黑树 图的遍历 二叉查找树二叉查找树(binary search tree),二叉查找树在二...

  • 二叉查找树

    二叉查找树,又称二叉搜索树 二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质: ...

  • 数据结构中的各种树

    一、二叉树 二、二叉查找树(又称二叉排序树,二叉搜索树) 二叉查找树(Binary Search Tree)它或者...

  • 11-二叉查找树

    二叉查找树 1.什么是二叉查找树? 二叉查找树是一种支持数据动态的插入,删除,查找的数据结构。 2.二叉查找树的设...

  • 6. 二叉树创建-查找

    1. 递归方式实现二叉树的构建2. 树、二叉树、二叉查找树3. 二叉树排序树的理解4. 二叉查找树5. 二叉树的查找

  • 二叉查找树

    二叉查找树定义 二叉查找树(Binary Search Tree), 也称为二叉搜索树, 有序二叉树(ordere...

  • 17张图带你解析红黑树的原理!保证你能看懂!

    二叉查找树 由于红黑树本质上就是一棵二叉查找树,所以在了解红黑树之前,咱们先来看下二叉查找树。 二叉查找树(Bin...

网友评论

      本文标题:二叉查找树(二)

      本文链接:https://www.haomeiwen.com/subject/xjdmkrtx.html