Member-only story
class Book:
def __init__(self, start, end):
self.start = start
self.end = end
self.left = None
self.right = None
# check if it can add item as a child to current node
# return bool
def insert(self, item):
if item.start >= self.end:
# insert to the right
if not self.right:
self.right = item
return True
return self.right.insert(item)
elif item.end <= self.start:
# insert to the left
if not self.left:
self.left = item
return True
return self.left.insert(item)
else:
return False
class MyCalendar(object):
def __init__(self):
self.root = None
def book(self, start, end):
new_book = Book(start, end)
if not self.root:
self.root = new_book
return True
return self.root.insert(new_book)