Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Computer Science Introduction to Data Structures Merge Sort and Linked Lists The Divide Step

Andrew Whatmore
seal-mask
.a{fill-rule:evenodd;}techdegree
Andrew Whatmore
Full Stack JavaScript Techdegree Student 13,423 Points

Checking for an empty list in the split function

At the top of the split() function, there is a check to see if the list is empty. I'm afraid I didn't understand the explanation for the bit that follows:

If the list is empty, 'linked_list' is assigned to 'left_half', while None is assigned to 'right_half'..

If the list is empty, wouldn't assigning the empty list be the same as assigning None anyway?

Could somebody please help me understand the logic. Many thanks.

1 Answer

Travis Alstrand
seal-mask
STAFF
.a{fill-rule:evenodd;}techdegree
Travis Alstrand
Treehouse Teacher

Hey there Andrew Whatmore đź‘‹

An empty linked list and None aren't the same thing in Python, even though both hold “nothing.”

An empty LinkedList is still an object. LinkedList() creates an instance whose head is None. That object still has everything the class defines, such as .head, .size(), .add() and so on. None is the absence of any object, so it has none of those.

Why left_half = linked_list: handing back the original list means the caller still gets a real LinkedList to work with, even though it’s empty. If the code returned None there, any later line like left_half.head or left_half.size() would crash.

Why right_half = None: an empty list can’t be divided, so there’s no second half to give back. None is just a way of saying “there’s nothing here.”

I hope that helps out a bit!