平衡樹學習筆記(1)-------簡介
阿新 • • 發佈:2018-11-24
平衡樹是一個很神奇的資料結構
noip前,學了其兩種實現方式,Splay和Treap,非常實用(雖然碼量有點。。)
每個平衡樹都是二叉查詢樹,保證\(左孩子 \leq 自己 \leq 右孩子\)
因此,平衡樹的中序遍歷就是插入節點的有序序列(理解一下)
平衡樹支援插入,刪除,以及各種查詢,以下面為例
\(\color{#0066ff}{題目描述}\)
您需要寫一種資料結構,來維護一些數,其中需要提供以下操作:
插入數x
刪除x數x(若有多個相同的數,只刪除一個)
查詢數x的排名(排名定義為比當前數小的數的個數+1。若有多個相同的數,輸出最小的排名)
查詢排名為x的數
求x的前驅(前驅定義為小於x,且最大的數)
求x的後繼(後繼定義為大於x,且最小的數)
\(\color{#0066ff}{輸入格式}\)
第一行為n,表示操作的個數,下面nn行每行有兩個數opt和x,opt表示操作的序號\(1\leq opt \leq 6\)
\(\color{#0066ff}{輸出格式}\)
對於操作3,4,5,6每行輸出一個數,表示對應答案
\(\color{#0066ff}{輸入樣例}\)
10 1 106465 4 1 1 317721 1 460929 1 644985 1 84185 1 89851 6 81968 1 492737 5 493598
\(\color{#0066ff}{輸出樣例}\)
106465
84185
492737