Commit 5000b6a

mo <mokha@cisco.com>
2017-08-02 16:46:05
add another spec.
1 parent 2f64c27
Changed files (1)
spec
spec/binary_trees/is_tree_symetric_spec.rb
@@ -132,20 +132,27 @@ DOC
     node.left.nil? && node.right.nil?
   end
 
+<<-DOC
+    1
+   / \
+  2   3
+ /   /
+3    2
+DOC
   def symmetric?(tree)
-    level, visited, queue, nodes_in_level = 0, 0, [tree], []
+    level, visited, queue, values_in_level = 0, 0, [tree], []
 
     until queue.empty?
       node = queue.shift
-      nodes_in_level.push(node&.value)
+      values_in_level.push(node&.value)
       visited += 1
       max_per_level = (2**level)
 
-      if visited >= max_per_level
-        return false unless symmetric_array?(nodes_in_level)
+      if visited == max_per_level
+        return false unless symmetric_array?(values_in_level)
 
         level += 1
-        visited, nodes_in_level = 0, []
+        visited, values_in_level = 0, []
       end
 
       unless leaf?(node)
@@ -161,18 +168,12 @@ DOC
     { t: { "value": 1, "left": { "value": 2, "left": { "value": 3, "left": nil, "right": nil }, "right": { "value": 4, "left": nil, "right": nil } }, "right": { "value": 2, "left": { "value": 4, "left": nil, "right": nil }, "right": { "value": 3, "left": nil, "right": nil } } }, x: true },
     { t: { "value": 1, "left": { "value": 2, "left": nil, "right": { "value": 3, "left": nil, "right": nil } }, "right": { "value": 2, "left": nil, "right": { "value": 3, "left": nil, "right": nil } } }, x: false },
     { t: nil, x: true },
+    { t: { value: 1, left: nil, right: nil }, x: true },
     { t: { "value": 100, "left": nil, "right": { "value": 100, "left": nil, "right": nil } }, x: false },
     { t: { "value": 100, "left": { "value": 100, "left": nil, "right": nil }, "right": nil }, x: false },
     { t: { "value": 99, "left": { "value": 100, "left": nil, "right": nil }, "right": { "value": 99, "left": nil, "right": nil } }, x: false },
     { t: { "value": 1, "left": { "value": 2, "left": { "value": 3, "left": nil, "right": nil }, "right": nil }, "right": { "value": 3, "left": { "value": 2, "left": nil, "right": nil }, "right": nil } }, x: false }
   ].each do |x|
-<<-DOC
-    1
-   / \
-  2   3
- /   /
-3    2
-DOC
     it do
       expect(symmetric?(Tree.build_from(x[:t]))).to eql(x[:x])
     end