examples/binary_search_tree.rb in compsci-0.3.0.1 vs examples/binary_search_tree.rb in compsci-0.3.1.1
- old
+ new
@@ -1,16 +1,51 @@
require 'compsci/node'
-require 'compsci/binary_search_tree'
require 'compsci/names'
include CompSci
-RANDMAX = 99
+puts <<EOF
+#
+# Insert nodes into a BST (random keys, duplicates: true)
+#
+
+EOF
+
+randmax = 99
+
p vals = Names::WW1.shuffle
-p keys = Array.new(vals.size) { rand RANDMAX }
+p keys = Array.new(vals.size) { rand randmax }
-root = BinarySearchTree.new_node(keys.shift, vals.shift)
-tree = BinarySearchTree.new(root)
-tree[keys.shift] = vals.shift until keys.empty?
-# tree.insert(keys.shift, vals.shift) until keys.empty?
-puts tree
+root = KeyNode.new(vals.shift, key: keys.shift, children: 2, duplicates: true)
+root.insert(keys.shift, vals.shift) until keys.empty?
+
+puts root.display
+puts
+
+puts <<EOF
+
+#
+# Insert 30 nodes into a BST (unique keys, duplicates: false)
+#
+
+EOF
+
+keys = (1..30).to_a.shuffle
+vals = keys.map { rand 99 }
+
+root = KeyNode.new(vals.shift, key: keys.shift, children: 2)
+root.insert(keys.shift, vals.shift) while !keys.empty?
+puts root.display
+
+puts <<EOF
+
+#
+# Search for 30 different keys
+#
+
+EOF
+
+(1..30).each { |key|
+ node = root.search(key)
+ puts "found #{node}"
+}