We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 3ccb001 commit aef9141Copy full SHA for aef9141
copypasta/splay.go
@@ -34,6 +34,8 @@ type spNode struct {
34
sz int
35
key spKeyType
36
val spValueType
37
+
38
+ flipTodo bool
39
}
40
41
// 设置如下返回值是为了方便使用 spNode 中的 lr 数组
@@ -60,9 +62,20 @@ func (o *spNode) maintain() {
60
62
o.sz = 1 + o.lr[0].size() + o.lr[1].size()
61
63
64
-func (o *spNode) pushDown() {
- // custom ...
65
+func (o *spNode) apply() {
66
+ if o != nil {
67
+ o.flipTodo = !o.flipTodo // 举例
68
+ }
69
+}
70
71
+func (o *spNode) pushDown() {
72
+ if !o.flipTodo { // 举例
73
+ return
74
75
+ o.lr[0].apply()
76
+ o.lr[1].apply()
77
+ o.lr[0], o.lr[1] = o.lr[1], o.lr[0]
78
+ o.flipTodo = false
79
80
81
// 构建一棵中序遍历为 [l,r] 的 splay 树
0 commit comments