class LevelNodes

Attributes

size[R]

Public Class Methods

new(nodes) click to toggle source
# File lib/huffman_coding/level_nodes.rb, line 6
def initialize(nodes)
  @hash = Hash.new{|h, k| h[k] = [] }
  @hash[0] = nodes.sort
  @size = nodes.size
end

Public Instance Methods

pop_min_node() click to toggle source
# File lib/huffman_coding/level_nodes.rb, line 12
def pop_min_node
  level, nodes = @hash.min_by{|_, v| v[0] }
  node = nodes.shift
  @hash.delete(level) if nodes.size == 0
  @size -= 1
  return level, node
end
push_node(level, node) click to toggle source
# File lib/huffman_coding/level_nodes.rb, line 20
def push_node(level, node)
  @hash[level] << node
  @hash[level].sort!
  @size += 1
end