None为一个占位符,通过给None赋值无法将链表串联起来,二叉搜索树同理
class node:
def __init__(self,value):
self.value = value
self.next = None
class LinkList:
def __init__(self):
self.head = None
def insert(self,value):
if not self.head:
self.head = node(value)
else:
temp = self.head
while temp.next != None:
temp = temp.next
temp.next = node(value)
# 错误的认为将None值进行赋值可以将链表串联起来,写出如下无效代码
#while temp != None:
# temp = temp.next
#temp = node(value)
def printLinkList(self):
temp = self.head
while temp != None:
print(temp.value)
temp = temp.next
def main():
l = LinkList()
l.insert(1)
l.insert(2)
l.insert(3)
l.printLinkList()
main()
纠正逻辑后实现的二叉搜索树如下
class TreeNode:
def __init__(self, value):
self.value=value
self.left=None
self.right=None
#实现insert,search方法
class BinarySearchTree:
def __init__(self):
self.root = None
def insert(self, value):
if not self.root:
self.root = TreeNode(value)
else:
self._insert(self.root, value)
def _insert(self, node, value):
if value > node.value and node.right == None:
node.right = TreeNode(value)
return
if value < node.value and node.left == None:
node.left = TreeNode(value)
return
if node.right != None:
self._insert(node.right, value)
if node.left != None:
self._insert(node.left, value)
def search(self, value):
if not self.root:
return False
else:
if value == self.root.value:
return True
else:
return self._search(self.root, value)
def _search(self, node, value):
if node.value == value:
return True
if node.left == None and node.right == None:
return False
if node.left != None:
return self._search(node.left, value)
if node.right != None:
return self._search(node.right, value)
def main():
bst = BinarySearchTree()
bst.insert(1)
bst.insert(2)
bst.insert(3)
bst.insert(4)
bst.insert(5)
bst.insert(6)
bst.insert(7)
bst.insert(8)
bst.insert(9)
bst.insert(10)
bst.insert(11)
bst.insert(12)
print(bst.search(3))
main()