Skip to content

Commit aef9141

Browse files
committed
upd
1 parent 3ccb001 commit aef9141

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

copypasta/splay.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ type spNode struct {
3434
sz int
3535
key spKeyType
3636
val spValueType
37+
38+
flipTodo bool
3739
}
3840

3941
// 设置如下返回值是为了方便使用 spNode 中的 lr 数组
@@ -60,9 +62,20 @@ func (o *spNode) maintain() {
6062
o.sz = 1 + o.lr[0].size() + o.lr[1].size()
6163
}
6264

63-
func (o *spNode) pushDown() {
64-
// custom ...
65+
func (o *spNode) apply() {
66+
if o != nil {
67+
o.flipTodo = !o.flipTodo // 举例
68+
}
69+
}
6570

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
6679
}
6780

6881
// 构建一棵中序遍历为 [l,r] 的 splay 树

0 commit comments

Comments
 (0)