替罪羊樹SCT

2021-08-16 19:51:31 字數 999 閱讀 8205

照著指標版的打了個陣列版的,

發現自己上了一節c++語法課。

重構什麼的,最難在於找出深度最小的需要重構的節點,

畢竟多寫乙個函式不太優雅,

陣列又不像指標那麼方便直接修改。

如果你要傳回乙個變數的位址(因為你直接修改這個位址ch等等就直接跟著改了,十分方便)

函式不能寫 int&

得寫int *...............

刪除還是不要重構,太浪費了。。。。。。

#include#include#include#include#include#include#include#includeusing namespace std;

/*namespace scapegoat_tree

bool isbad(int now)

int root,tot;

int newnode(int v)

int seq[maxn],len;

void build(int &now,int l,int r)

int mid=(l+r)>>1;

now=seq[mid];

build(lc[now],l,mid-1);

build(rc[now],mid+1,r);

upd(now);

} void recycle(int now)

void rebuild(int &now)

int* insert(int& now,int v)

else

}void insert(int v)

void delete(int now,int rk) }

int rank(int v)

}return ret;

} int sank(int rk) }

void erase(int v) /*

}*/inline void read(int &res)

int main()

}

平衡樹 替罪羊樹

yangkai 身為平衡樹卻不做任何形式的旋轉,替罪羊樹可以稱得上是最暴力的平衡樹了。替罪羊樹 sgt 保留有二叉搜尋樹的基本性質,即對於任意乙個節點t,左兒子的所有節點比它小,右兒子的所有節點比它大。但是既然不基於翻轉,它怎樣維護平衡樹的優秀複雜度呢?sdt基於乙個叫做 重構 的操作,聽起來很是優...

替罪羊樹學習小記

替罪羊樹是一種沒有旋轉操作的二叉搜尋樹。或者說就是一顆二叉搜尋樹,暴力的那種。插入就是自上而下找到應該插入的地方而後插進去。我們知道這樣搞肯定是可以變成o n o n o n 的深度其複雜度的保證依賴於重構。即一棵子樹不平衡直接提出來重構成完全二叉樹。不平衡的定義為 m ax siz x0 siz ...

替罪羊樹學習日記

昨天晚上wq學長講課,講完讓人略微懵逼的kd tree,學長心血來潮要講替罪羊樹 學長 儘管這個玩意又臭又長,但是我從學會一直打到了退役,你們今天晚上和明天上午可以不看板子自己yy一下 一向乖巧聽話 人慫膽小 的我覺得學長說得對啊,然後第二天早上我欣然開始了替罪羊樹之旅,並不知道後面等著我的是什麼 ...