#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/7/28 20:57 # @Author : @linlianqin # @Site : # @File : 二叉平衡专题(创建、插入、查找).py # @Software: PyCharm # @description: ''' 二叉平衡的特点:
排序二叉中存在一个问题就是可能会退化成一个链表,当只有左子树或者右子树有节点的时候,此时排序二叉就像链表一样,但因为排序二叉在插入查询的时候还要判断左右子树的问题,这样查询的效率反而变低,从而引出了平衡二叉平衡二叉又称平衡搜索(Self-balance Binary Search Tree)又称AVL,同时保证了查询和添加的效率。首先平衡二叉是一颗排序二叉,且它是空或者他的每一
实现二叉对于我们已经算是轻车熟路了。先来定义的结点:class AVLNode { public int data; public int depth; public int balance; public AVLNode parent; public AVLNode left; public AVLNode right; public AVLNode(int data) { this.dat
平衡最近半期考试比较忙,因此部分代码没有写,以后补上。优势人群(Efficient Solutions, UVa11020)description给出\(n\) 个物品,每个物品有两个特征值\(L,C\) 。定义物品\(i\) 比物品\(j\) 优秀当且仅当满足以下条件至少一条\(L_i<L_j\)且 \(C_i\le C_j\)\(L_i\le L_j\) 且 \(C_i< C_j
转载 2021-05-06 15:19:51
260阅读
2评论
平衡
原创 2021-08-11 13:59:12
177阅读
平衡 Treap实现 思路: 利用堆的性质, 让二叉搜索数满足堆的性质,从而达到logn的高度. 模板 具体解释看注释,注释也不多(逃) 代码: c++ / 平衡数Treap模板 Treap 可以理解为一棵加上一个堆, 通过对每个节点赋予一个随机值 在满足堆的性质的同时满足二叉搜索的性质, 保
转载 2019-09-13 17:40:00
181阅读
2评论
int merge(int p1,int p2){//合并两棵treap if(!p1)return p2; if(!p2)return p1; if(z[p1].keysplit(int p,int k){//把p拆成两棵,一棵大小为k,另一棵为n-k if(z[z[p].l].size>=k){ if(!z[p].l)return mak...
转载 2017-10-29 21:38:00
59阅读
2评论
题目链接 P3369 【模板】普通平衡 P3369 【模板】普通平衡 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入 \(x\) 数 删除 \(x\) 数(若有多个相同的数,因只删除一个) 查询 \(x\) 数的排名(排名定义为比当前数小的数的个数 ...
转载 2021-09-24 18:04:00
101阅读
2评论
二分查找( BST ) \(\operatorname{BST}\) 满足性质: 每一个节点关键码 不小于 它 左子树中 任意节点关键码。 每一个节点关键码 不大于 它 右子树中 任意节点关键码。 整棵 中序遍历单调递增 。 建立:由两个节点( \(+inf~\&~-inf\) )构成 。 查 ...
转载 2021-09-13 11:06:00
123阅读
2评论
0.总言平衡是一种十分有用的数据结构,它能支持以下操作:1、插入一个数x2、删除一个数x3、查询一个数x(其排名,其前驱后继)4、查询排名为k的数x5、快速合并与分裂6、维护区间修改、查询、翻转7、维护其它信息了解平衡,先从最普通的\(\text{Treap}\)开始。(注:下文的平衡实现均用指针)1.平衡 && Treap平衡是一种特殊的二叉查找,所谓二叉查找,就是
package 平衡; public class Tree { public Node root; //二叉的:中序遍历 public void inOrder(Node temp){ if(temp!=null){ inOrder(temp.leftChild); System.out.println("--中序--"+temp.data);
转载 2024-04-11 13:03:07
45阅读
平衡是一种特殊的二叉,引入了平衡因子概念,对于每一个节点,统计左子树与右子树的高度,两者的差即为平衡因子,平衡因子为-1,1,0时我们认为平衡的,当出现2,-2时则认为失衡了,需要进行调整。同时由于一颗子树的失衡会向根节点传递,所以我们只需要将第一个失衡子树平衡,就能保持整体的平衡。 平衡出现失衡的情况只有两种,增加节点时与删除节点时。以下分开讨论。 1.增加节点由
转载 2023-07-05 16:50:42
73阅读
Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区
原创 2021-07-28 10:45:31
254阅读
记一下自己写的平衡 方便以后复制粘贴 题目链接 Vector 最快:284ms 1 #include<cstdio> 2 #include<vector> 3 #include<algorithm> 4 using namespace std; 5 const int MAXN=100005; 6
原创 2021-06-04 22:45:18
278阅读
概要:平衡大概是最常用的高级数据结构了,而treap用来进行一般的信息维护,splay用来进行高级的信息维护(比如区间操作、lct等)(map、set党自重QAQ)。技巧及注意:细节十分多。
原创 2021-08-11 14:42:53
205阅读
什么是平衡 平衡其实是二叉搜索的优化,满足 BST 1 性质。 关于平衡的种类其实有很多,但本文不涉及太多,我们讲讲最常用的 \(3\) 中平衡吧。 \(Treap\) \(fhq \ Treap\) \(Splay\) 先想想二叉搜索为什么要优化 ? 当然是因为如果我们要插入一连串且非 ...
转载 2021-08-22 17:19:00
134阅读
2评论
一种很牛~的算法,超级烦琐 给我的感觉就是:背模板才是王道~ 所以下面就献上一道裸题,方便模板的练习bzoj3224 Description您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 1. 插入x数 2. 删除x数(若有多个相同的数,...
转载 2017-03-12 12:28:00
97阅读
2评论
一、平衡用来干什么 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入 xxx 数 删除 xxx 数(若有多个相同的数,因只删除一个) 查询 xxx 数的排名(排名定义为比当前数小的数的个数 +1+1+1 ) 查询排名为 xxx 的数 求 xxx 的前驱(前驱定义为
转载 2020-01-19 16:16:00
720阅读
2评论
题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入x数 删除x数(若有多个相同的数,因只删除一个) 查询x数的排名(排名定义为比当前数小的数的个数+1。若有多个相同的数,因输出最小的排名) 查询排名为x的数 求x的前驱(前驱定义为小于x,且最大的数) 输入输
转载 2018-01-15 20:03:00
146阅读
2评论
#include<cstdio> #include<algorithm> #include<ctime> using namespace std; int n,m,root,tot = 0; struct tree{ int ls,rs,v,siz,rnd,tag; }tr[100005]; int ...
转载 2021-09-17 12:49:00
76阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5