二分查找与二叉树排序
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)
相关文章推荐
- 二叉树排序(二分查找)[迭代]
- 二叉树排序(二分查找)[递归]
- 第十四周项目2二叉树排序树中查找的路径
- 排序及二分查找
- 二叉树排序树中的查找路径
- 剑指Offer--数组在排序数组中出现的次数--二分查找的应用
- 第十四周项目2—二叉树排序树中查找的路径
- 排序与二分查找
- 二分查找函数bsearch与排序函数qsort(两个好基友)
- 第十四周项目2-二叉树排序树中查找的路径
- java的 最大值 选择排序 冒泡排序 二分查找
- 第十三周 ——项目二 “二叉树排序树中查找的路径”
- LeetCode-Find Minimum in Rotated Sorted Array II-旋转排序数组找最小-二分查找
- 第十四周项目2---二叉树排序树中查找的路径
- 快速排序与二分查找
- 码农小汪剑指Offer之35-数字在排序数组中出现的次数 暴力 二分查找的运用
- 第十四周项目二(二叉树排序树中查找的路径)
- 第十四周项目2-二叉树排序树中查找的路径
- 第14周项目2-二叉树排序树中查找的路径
- LintCode 排序列表转换为二分查找树