(node, nilNode Node[T])
| 171 | } |
| 172 | |
| 173 | func successorHelper[T constraints.Ordered](node, nilNode Node[T]) (T, bool) { |
| 174 | if node.Right() != nilNode { |
| 175 | return minimum(node.Right(), nilNode).Key(), true |
| 176 | } |
| 177 | |
| 178 | p := node.Parent() |
| 179 | for p != nilNode && node == p.Right() { |
| 180 | node = p |
| 181 | p = p.Parent() |
| 182 | } |
| 183 | |
| 184 | if p == nilNode { |
| 185 | var dft T |
| 186 | return dft, false |
| 187 | } |
| 188 | return p.Key(), true |
| 189 | } |