Class: Puppet::Graph::RbTreeMap::Node
- Defined in:
- lib/puppet/graph/rb_tree_map.rb
Overview
:nodoc: all
Instance Attribute Summary collapse
-
#color ⇒ Object
Returns the value of attribute color.
-
#key ⇒ Object
Returns the value of attribute key.
-
#left ⇒ Object
Returns the value of attribute left.
-
#right ⇒ Object
Returns the value of attribute right.
-
#value ⇒ Object
Returns the value of attribute value.
Instance Method Summary collapse
- #colorflip ⇒ Object
- #fixup ⇒ Object
-
#initialize(key, value) ⇒ Node
constructor
A new instance of Node.
- #move_red_left ⇒ Object
- #move_red_right ⇒ Object
- #red? ⇒ Boolean
- #rotate_left ⇒ Object
- #rotate_right ⇒ Object
- #to_hash ⇒ Object
Constructor Details
#initialize(key, value) ⇒ Node
Returns a new instance of Node.
206 207 208 209 210 211 212 |
# File 'lib/puppet/graph/rb_tree_map.rb', line 206 def initialize(key, value) @key = key @value = value @color = :red @left = nil @right = nil end |
Instance Attribute Details
#color ⇒ Object
Returns the value of attribute color.
204 205 206 |
# File 'lib/puppet/graph/rb_tree_map.rb', line 204 def color @color end |
#key ⇒ Object
Returns the value of attribute key.
204 205 206 |
# File 'lib/puppet/graph/rb_tree_map.rb', line 204 def key @key end |
#left ⇒ Object
Returns the value of attribute left.
204 205 206 |
# File 'lib/puppet/graph/rb_tree_map.rb', line 204 def left @left end |
#right ⇒ Object
Returns the value of attribute right.
204 205 206 |
# File 'lib/puppet/graph/rb_tree_map.rb', line 204 def right @right end |
#value ⇒ Object
Returns the value of attribute value.
204 205 206 |
# File 'lib/puppet/graph/rb_tree_map.rb', line 204 def value @value end |
Instance Method Details
#colorflip ⇒ Object
231 232 233 234 235 |
# File 'lib/puppet/graph/rb_tree_map.rb', line 231 def colorflip @color = @color == :red ? :black : :red @left.color = @left.color == :red ? :black : :red @right.color = @right.color == :red ? :black : :red end |
#fixup ⇒ Object
290 291 292 293 294 295 296 |
# File 'lib/puppet/graph/rb_tree_map.rb', line 290 def fixup rotate_left if @right && @right.red? rotate_right if (@left && @left.red?) && (@left.left && @left.left.red?) colorflip if (@left && @left.red?) && (@right && @right.red?) self end |
#move_red_left ⇒ Object
271 272 273 274 275 276 277 278 279 |
# File 'lib/puppet/graph/rb_tree_map.rb', line 271 def move_red_left colorflip if @right.left && @right.left.red? @right.rotate_right rotate_left colorflip end self end |
#move_red_right ⇒ Object
281 282 283 284 285 286 287 288 |
# File 'lib/puppet/graph/rb_tree_map.rb', line 281 def move_red_right colorflip if @left.left && @left.left.red? rotate_right colorflip end self end |
#red? ⇒ Boolean
227 228 229 |
# File 'lib/puppet/graph/rb_tree_map.rb', line 227 def red? @color == :red end |
#rotate_left ⇒ Object
237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 |
# File 'lib/puppet/graph/rb_tree_map.rb', line 237 def rotate_left r = @right r_key = r.key r_value = r.value b = r.left r.left = @left @left = r @right = r.right r.right = b r.color = :red r.key = @key r.value = @value @key = r_key @value = r_value self end |
#rotate_right ⇒ Object
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 |
# File 'lib/puppet/graph/rb_tree_map.rb', line 254 def rotate_right l = @left l_key = l.key l_value = l.value b = l.right l.right = @right @right = l @left = l.left l.left = b l.color = :red l.key = @key l.value = @value @key = l_key @value = l_value self end |
#to_hash ⇒ Object
214 215 216 217 218 219 220 221 222 223 224 225 |
# File 'lib/puppet/graph/rb_tree_map.rb', line 214 def to_hash h = { :node => { :key => @key, :value => @value, :color => @color, } } h[:left] = left.to_hash if @left h[:right] = right.to_hash if @right h end |