programming-examples/ruby/Algorithms/balanced_binary_tree.rb
2019-11-15 12:59:38 +01:00

24 lines
507 B
Ruby

def balanced_binary_tree(node)
depths = []
stack = []
stack.push([node, 0])
while stack.length > 0
node, depth = stack.pop
if !node.left && !node.right
unless depths.include?(depth)
depths << depth
if depths.length > 2 || (depths.length == 2 && (depth[0] - depth[1]).abs > 1)
return false
end
end
else
stack.push([node.left, depth + 1]) if node.left
stack.push([node.right, depth + 1]) if node.right
end
end
true
end