In [ ]:
def insert(x,nums):
if nums == []:
return [x]
elif x <= nums[0]:
return [x] + nums
else:
return [nums[0]] + insert(x,nums[1:])
def isort(nums):
if nums == []:
return []
else:
return insert(nums[0],isort(nums[1:]))
In [5]:
# implementing sets; so no duplicates
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
# insert returns True or False depending on whether the value was inserted
def insert(self, x):
if x < self.value:
if self.left is None:
n = Node(x)
self.left = n
return True
else:
return self.left.insert(x)
elif x > self.value:
if self.right is None:
n = Node(x)
self.right = n
return True
else:
return self.right.insert(x)
else:
return False
def __str__(self):
if self.left is None and self.right is None:
return str(self.value)
elif self.left is None:
return str(self.value) + "," + str(self.right)
elif self.right is None:
return str(self.left) + "," + str(self.value)
else:
return str(self.left) + "," + str(self.value) + "," + str(self.right)
# 10,20,30,40,50,60,70,80,90,100
In [6]:
class BST:
def __init__(self):
self.root = None
def insert(self, x):
if self.root is None:
self.root = Node(x)
return True
else:
return self.root.insert(x)
def __str__(self):
return str(self.root)
In [7]:
t = BST()
t.insert(40)
t.insert(50)
t.insert(30)
print(t)
30,40,50
In [ ]:
In [1]:
str(None)
Out[1]:
'None'