Q: 假设我们有binary search tree (BST), 请写出search, insert, printOrder, printMax 函数
二叉搜索树(BST)基本特性:
- 所有非叶子结点至多拥有两个儿子(Left和Right)
- 所有结点存储一个关键字
- 非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树
python 代码:
class Node():
def __init__(data, self):
self.data = data
self.rightChild = None
self.leftChild = None
def search(self, newData):
if newData == self.data:#如果所查找的数为当前节点,则找到
return self.data
elif newData > self.data:#如果所查找的数大于当前节点,则往右找
if self.rightChild == None:#如果右边没有,则找不到,否则再重复查找过程
return False
else:
return self.rightChild.search(newData)
else:
if self.leftChild == None:
return False
else:
return self.leftChild.search(newData)
def insert(self, newData):
if newData == self.data: #不能插入重复数
return False
elif newData > self.data: #如果大于节点,往右走;反之往左走
if self.rightChild == None:#如果没有右节点,新数据成为一个新的右节点
self.rightChild = Node(newData)
else:
self.rightChild.insert(newData)
else:
if self.leftChild == None:#如果没有左节点,新数据成为一个新的左节点
self.leftChild = newData
else:
self.leftChild.insert(newData)
def printOrder(self):#按从小到大排序打印
if self.leftChild:
self.leftChild.printOrder()
print(self.data)
if self.rightChild:
self.rightChild.printOrder()