def find_leftmost_descendant(node):
    """
    Given a node, find its leftmost descendant
    """
    if node.leaf:
        return node
    else:
        leftmost_child = node.get_children_nodes()[0]
        return find_leftmost_descendant(leftmost_child)