Skip to content

Instantly share code, notes, and snippets.

@hbakhtiyor
Created August 23, 2013 02:51
Show Gist options
  • Save hbakhtiyor/6315084 to your computer and use it in GitHub Desktop.
Save hbakhtiyor/6315084 to your computer and use it in GitHub Desktop.
def count_bottom_leaves(binary_tree)
return helper(binary_tree, get_depth_leaf(binary_tree))
end
def helper (binary_tree, bound_depth, depth=0)
return 0 if(binary_tree == false)
left_node = binary_tree[1]
right_node = binary_tree[2]
if(left_node == false && right_node == false)
return bound_depth == depth + 1 ? 1 : 0
else
left_cbl = helper(left_node, bound_depth, depth + 1)
right_cbl = helper(right_node, bound_depth, depth + 1)
return left_cbl + right_cbl
end
return 0
end
def get_depth_leaf(binary_tree, depth=0)
return depth if(binary_tree == false)
left_node = binary_tree[1]
right_node = binary_tree[2]
left_depth = get_depth_leaf(left_node, depth + 1)
right_depth = get_depth_leaf(right_node, depth + 1)
return left_depth > right_depth ? left_depth : right_depth
end
puts count_bottom_leaves([2, [5, false, [7, false, false]], [9, false, false]]) # => 1
puts count_bottom_leaves([2, [5, false, [7, false, false]], [9, false, [11, false, false]]]) # => 2
puts count_bottom_leaves([2, [5, [6, false, false], [7, false, false]], [9, false, [11, false, false]]]) # => 3
puts count_bottom_leaves([2, [5, [6, false, false], [7, false, false]], [9, [10, false, false], [11, false, false]]]) # => 4
puts count_bottom_leaves([2, [5, [6, false, false], [7, false, false]], [9, false, false]]) # => 2
puts count_bottom_leaves([2, [5, [6, false, [20, false, false]], [7, false, false]], [9, [10, false, false], [11, false, false]]]) # => 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment