其他分享
首页 > 其他分享> > 初学 笛卡尔树

初学 笛卡尔树

作者:互联网

表示之前没见过这种东西。

概念

Link

构造

知乎

以下均假设原序列元素两两不相同。

从左至右依次加入元素,维护当前笛卡尔树的右耳子链

\[root\to rson\to rson.rson\to rson.rson.rson\dots \]

至一个栈内。

设加入的节点为 \(x\),\(t\) 为当前笛卡尔树。

  1. 找到栈中最靠顶部的节点 \(y\) 使得 \(val[y]<val[x]\)。

  2. 特判 \(y\) 为栈顶,直接 \(t[y].rson:=x\) 即可结束。

  3. 记栈中 \(y\) 的楼上为 \(z\)

时间 \(O(n)\)

标签:加入,rson,元素,子链,笛卡尔,初学,节点
来源: https://www.cnblogs.com/zhangshaojia/p/15415540.html