二分查找
# def binary_search(alist,item):
# n = len(alist)
# mid = n//2
# if n > 0:
# if alist[mid] == item:
# return True
# elif item<alist[mid]:
# return binary_search(alist[:mid],item)
# elif item > alist[mid]:
# return binary_search(alist[mid+1:],item)
# return False
#
# if __name__ =="__main__" :
# li = [17, 20, 26, 31, 44, 54, 55, 77, 93]
# print(binary_search(li,55))
二叉树
class Node(object):
def __init__(self,item):
self.elem = item
self.lchild = None
self.rchild = None
class Tree(object):
def __init__(self):
self.root = None
def add(self,item):
node = Node(item)
if self.root is None:
self.root = node
return
queue = [self.root]
while queue:
cur_node = queue.pop(0)
if cur_node.lchild is None:
cur_node.lchild = node
return
else:
queue.append(cur_node.lchild)
if cur_node.rchild is None:
cur_node.rchild = node
else:
queue.append(cur_node.rchild)