每天一道算法题(2019.2.24)
作者:互联网
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()
标签:24,rightChild,return,self,leftChild,2019.2,算法,data,newData 来源: https://blog.csdn.net/weixin_42936560/article/details/87902017