您的位置:首页 > 编程语言 > Python开发

二分查找与二叉树排序

2018-02-06 13:51 513 查看
#-*-coding=utf-8 -*-

def binarysearch(list, value):
low = 0
hight = len(list) - 1
key = value
i = 0
while low <= hight:
i += 1
mid = (low + hight) // 2
if key > list[mid]:
low = mid + 1
elif key < list[mid]:
hight = mid - 1
else:
print 'use %d times'%i
return mid
return -1

class Btree():
def __init__(self, value):
self.left = None
self.data = value
self.right = None

def insertleft(self,value):
self.left = Btree(value)
return self.left

def insertright(self, value):
self.right = Btree(value)
return self.right

def show(self):
print self.data

def middle_order(root):
if root.data:
if root.left:
middle_order(root.left)
root.show()
if root.right:
middle_order(root.right)

def rmiddle_order(root):#先右后左的中序排序
if root.data:
if root.right:
rmiddle_order(root.right)
root.show()
if root.left:
rmiddle_order(root.left)

def insert(root, key):
if root.data:
if key < root.data:
if root.left:
insert(root.left, key)
else:
key = root.insertleft(key)
else:
if root.right:
insert(root.right,key)
else:
key = root.insertright(key)

if __name__ =='__main__':
#l = [1,2,3,5,9,10,15,16,17,19,23,26,29,34,36,50]
l=[5, 2, 3, 56,78,1,56,23,51,11,26,34]
#print binarysearch(l, 50)
root = Btree(l[0])
for ele in l[1:]:
insert(root, ele)
middle_order(root)
rmiddle_order(root)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python