栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java实现Treap

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java实现Treap

Treap树(笛卡尔树)= Heap (堆)+BST (二叉搜索树 binary search trea)。这是一颗既满足堆的性质与BST的性质的树。

当我们只知道一颗二叉查找树(BST)的 valval 的时候,我们可以将任意一个点作为根节点,任意一个比此点 valval 小的点作为左儿子,任意一个比此点 valval 大的点作为右儿子,按照此种方法建树后,如果我们进行中序遍历,会发现遍历出的序列是有序且一定的。

那么小顶堆(Heap)的性质是修正值最小的点一定在最上方,也就是根,左儿子和右儿子的 rndrnd 是左子树和右子树分别的最小值,由于有BST的性质限制,又有了Heap的性质限制后我们就发现这棵树的结构也是一定的。

public class Treap{
    class Node{
        Node right;
        Node left;
        Object data;
        Node parent;
        int priority;
        public Node(Object d,int pro,Node p){
            data=d;priority=pro;parent=p;
        }
        public void printTree(Node root){
            if(root!=null){
                printTree(root.left);
                System.out.println(root.data);
                printTree(root.right);
            }
        }

        
        public Node query(Node root,int value){
            Node node=root;
            while(node!=null){
                if((int)node.data>value){
                    node=node.left;
                }else if((int)node.datavalue.hashCode()){
                root.left=insert(value,root.left,root);
                //插入完成后,根据优先级进行旋转操作
                //左子节点的优先级值小于根节点的优先级
                //根据小顶堆的规则,需要进行右旋操作
                if(root.left.priority< root.priority){
                   root=rightRotate(root);
                }
            }else if(root.data.hashCode()value.hashCode()){
                root.left=delete(value,root.left);
            }
        }else if(root.data.hashCode()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/782357.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号