加强可读性

This commit is contained in:
eson 2019-04-07 04:43:03 +08:00
parent c9c8308ebf
commit 3ef4f4d134

View File

@ -624,37 +624,41 @@ func (tree *vbTree) Traversal(every func(v interface{}) bool, traversalMethod ..
} }
} }
func setChild(cur *tNode, cidx int, child *tNode) {
cur.children[cidx] = child
cur.children[cidx].parent = cur
}
func (tree *vbTree) replaceParent(old, new *tNode) {
if old.parent == nil {
tree.root = new
} else {
if old.parent.children[1] == old {
old.parent.children[1] = new
} else {
old.parent.children[0] = new
}
}
new.parent = old.parent
}
func (tree *vbTree) lrrotate3(cur *tNode) *tNode { func (tree *vbTree) lrrotate3(cur *tNode) *tNode {
const l = 1 const l = 1
const r = 0 const r = 0
ln := cur.children[l] ln := cur.children[l]
cur.children[l] = nil
lrn := ln.children[r] lrn := ln.children[r]
ln.children[r] = nil ln.children[r] = nil
if cur.parent == nil { tree.replaceParent(cur, lrn)
tree.root = lrn setChild(lrn, l, ln)
} else { setChild(lrn, r, cur)
if cur.parent.children[1] == cur {
cur.parent.children[1] = lrn
} else {
cur.parent.children[0] = lrn
}
}
lrn.parent = cur.parent
lrn.children[l] = cur.children[l]
lrn.children[l].parent = lrn
lrn.children[r] = cur
lrn.children[r].parent = lrn
cur.children[l] = nil
lrn.size = 3 lrn.size = 3
lrn.children[l].size = 1 lrn.children[l].size = 1
lrn.children[r].size = 1 lrn.children[r].size = 1
return lrn return lrn
} }
@ -703,32 +707,18 @@ func (tree *vbTree) rlrotate3(cur *tNode) *tNode {
const r = 1 const r = 1
ln := cur.children[l] ln := cur.children[l]
cur.children[l] = nil
lrn := ln.children[r] lrn := ln.children[r]
ln.children[r] = nil ln.children[r] = nil
if cur.parent == nil { tree.replaceParent(cur, lrn)
tree.root = lrn setChild(lrn, l, ln)
} else { setChild(lrn, r, cur)
if cur.parent.children[1] == cur {
cur.parent.children[1] = lrn
} else {
cur.parent.children[0] = lrn
}
}
lrn.parent = cur.parent
lrn.children[l] = cur.children[l]
lrn.children[l].parent = lrn
lrn.children[r] = cur
lrn.children[r].parent = lrn
cur.children[l] = nil
lrn.size = 3 lrn.size = 3
lrn.children[l].size = 1 lrn.children[l].size = 1
lrn.children[r].size = 1 lrn.children[r].size = 1
return lrn return lrn
} }