I am learning about Binary Search trees and I don't understand why this code won't work for insert in to a binary search tree:
def insert(self, data, node):
node_to_insert = Node(data)
if node is None:
node = node_to_insert
else:
if data < node.data:
node.left = self.insert(data, node.left)
else:
node.right = self.insert(data, node.right)
I know this code works:
def insert(self, data, node):
node_to_insert = Node(data)
if node is None:
node = node_to_insert
else:
if data < node.data:
if node.left is None:
node.left = node_to_insert
else:
self.insert(data, node.left)
else:
if node.right is None:
node.right = node_to_insert
else:
self.insert(data, node.right)
The way I see it is that the extra is None
check should be done when the function is recalled no?
Also why does this work:
def print_inorder(self, node):
if node is not None:
self.print_inorder(node.left)
print node.data
self.print_inorder(node.right)
when it doesnt have the extra checks to see if node.left is None
before calling self.print_inorder(node.left)