main
 1require "spec_helper"
 2require "ostruct"
 3
 4def bfs(node)
 5  queue = []
 6  queue.push({:node => node, :level => 0})
 7  until (queue.empty?) do
 8    top = queue.shift
 9    p "#{top[:level]} #{top[:node].name}"
10    queue.push({:node => top[:node].left, :level => top[:level]+1}) if top[:node].left
11    queue.push({:node => top[:node].right, :level => top[:level]+1}) if top[:node].right
12  end
13end
14
15describe "bfs" do
16  it "should visit each item" do
17    nailah = OpenStruct.new(:name => "nini", :left => nil, :right => nil)
18    adia = OpenStruct.new(:name => "adia", :left => nil, :right => nil)
19    allison = OpenStruct.new(:name => "alli", :left => adia, :right => nailah)
20    caius = OpenStruct.new(:name => "caius", :left => nil, :right => nil)
21    reeves = OpenStruct.new(:name => "reeves", :left => nil, :right => nil)
22    lisa = OpenStruct.new(:name => "lisa", :left => caius, :right => reeves)
23    sandi = OpenStruct.new(:name => "sandi", :left => allison, :right => lisa)
24    bfs(sandi)
25  end
26end
27