Create a fixed seven-node binary tree and render its shape.

Algorithm

The canonical tree is 4(2(1,3),6(5,7)), so this Ruby DSA implementation can be compared directly with the rest of the DSA track.

Basic Implementation

basic.rb
class Node
  attr_accessor :value, :left, :right
  def initialize(value, left = nil, right = nil)
    @value = value
    @left = left
    @right = right
  end
end
def render(node)
  return "_" if node.nil?
  return node.value.to_s if node.left.nil? && node.right.nil?
  "#{node.value}(#{render(node.left)},#{render(node.right)})"
end
def sample_tree
  Node.new(4, Node.new(2, Node.new(1), Node.new(3)), Node.new(6, Node.new(5), Node.new(7)))
end
puts render(sample_tree)

Complexity

  • Time: O(n)
  • Space: O(n)

Implementation notes

  • Node is a Ruby class with attr_accessor :value, :left, :right, so each node stores one value and mutable child references.
  • initialize(value, left = nil, right = nil) uses nil as the empty-child value.
  • sample_tree builds the whole tree with nested Node.new calls rather than later child assignments.
  • The root call is Node.new(4, ..., ...); its left subtree is rooted at 2 and its right subtree is rooted at 6.
  • The trace shows construction from leaves upward: 1, 3, then 2(1,3), followed by 5, 7, then 6(5,7), and finally root 4.
  • render(node) prints nil as _, leaf nodes as their value, and internal nodes as value(left,right).
  • puts render(sample_tree) prints the compact tree string 4(2(1,3),6(5,7)).
node links A node stores one value plus references to its left and right children.