class Object
Constants
- ListNode
- TreeNode
Public Instance Methods
ShowArray(array, left_pointer, right_pointer)
click to toggle source
# File lib/lander/array_with_pointers.rb, line 1 def ShowArray(array, left_pointer, right_pointer) return unless valid_pointers?(left_pointer, right_pointer) buffer = ' ' * 3 left = find_left_position(left_pointer) right = find_right_position(array, right_pointer) puts "Left is #{left_pointer}, Right is #{right_pointer}" display_array(array, left, right, buffer) end
createLinkedList(arr)
click to toggle source
# File lib/lander/list_node.rb, line 5 def createLinkedList(arr) arr.map { |val| ListNode.new val } .tap { |nodes| nodes.each_with_index { |node, i| node.next = nodes[i+1] } } .first end
createTree(arr)
click to toggle source
# File lib/lander/tree_node.rb, line 45 def createTree(arr) root = TreeNode.new(arr.shift) queue = [root] until arr.empty? node = queue.shift left = arr.shift right = arr.shift node&.left = left && TreeNode.new(left) node&.right = right && TreeNode.new(right) queue.push(node&.left, node&.right) end root end
displayTree(arr)
click to toggle source
# File lib/lander/tree_node.rb, line 59 def displayTree(arr) createTree(arr).to_s end
display_array(array, left, right, buffer)
click to toggle source
# File lib/lander/array_with_pointers.rb, line 31 def display_array(array, left, right, buffer) if left == right puts "#{buffer}#{array}" puts "#{buffer}#{' ' * left} ^" puts "#{buffer}#{' ' * left} L" puts "#{buffer}#{' ' * right} R" elsif left < right puts "#{buffer}#{array}" puts "#{buffer}#{' ' * left} ^" + "#{' ' * (right - left - 1)}^" puts "#{buffer}#{' ' * left} L" + "#{' ' * (right - left - 1)}R" else puts "#{buffer}#{array}" puts "#{buffer}#{' ' * right} ^" + "#{' ' * (left - right - 1)}^" puts "#{buffer}#{' ' * right} R" + "#{' ' * (left - right - 1)}L" end end
find_left_position(left_pointer)
click to toggle source
# File lib/lander/array_with_pointers.rb, line 22 def find_left_position(left_pointer) (3 * left_pointer) end
find_right_position(array, right_pointer)
click to toggle source
# File lib/lander/array_with_pointers.rb, line 26 def find_right_position(array, right_pointer) return (3 * (array.length - 1)) if right_pointer == -1 (3 * right_pointer) end
valid_pointers?(left_pointer, right_pointer)
click to toggle source
# File lib/lander/array_with_pointers.rb, line 12 def valid_pointers?(left_pointer, right_pointer) if (left_pointer < 0) || (right_pointer < -1) puts "Please enter valid pointer values." puts "Left pointer values should be in range 0..(array.length - 1)" puts "Right pointer values should be in range 0..(array.length - 1) OR -1" return false end true end