Welcome to the Treehouse Community
Looking to learn something new?
Would we ever actually call split on a linked list with one node? I would think that would result in merge sort.
returning that item as naively sorted before it could be split. Thus you would never have a LinkedList with a value of None? Likewise, if the head was None then it would never be evaluated in the split function either since Merge_Sort would return it?
Chris FreemanTreehouse Moderator 68,082 Points
Your observation is correct. As implemented, the main
merge_sort code would quickly return if the linked_list contained one or fewer elements. Then why might the
split function need to also content with a single node or empty list?
It is a good programming practice also to cover boundary conditions within the
split function so it may be reused by other functions that need to split a linked list. This also lets the
split function focus on its core job of always returning two object regardless of the input given.
A follow up question one might ask: if
split handles the trivial list, why does
merge_sort need to check for trivial cases?
merge_sort needs to return on the trivial cases to end the recursive descent. Otherwise,
split would continue to return the linked_list as
left_half and none.
Post back if you need more help. Good luck!!!