[算法导论]二叉查找树的实现 @ Python
2015-01-27 14:50
706 查看
《算法导论》第三版的BST(二叉查找树)的实现:
class Tree: def __init__(self): self.root = None # Definition for a binary tree node class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None self.parent = None class Solution: # @param root, a tree node # @return an integer def TreeSearch(self, x, k): if x == None or x.val == k: return x if k < x.val: return self.TreeSearch(x.left, k) else: return self.TreeSearch(x.right, k) def IterativeTreeSearch(self, x, k): while x != None and x.val != k: if k < x.val: x = x.left else: x = x.right return x def TreeMinimum(self, x): while x.left != None: x = x.left return x def TreeMaximum(self, x): while x.right != None: x = x.right return x def TreeSuccessor(self, x): if x.right != None: return self.TreeMinimum(x) y = x.parent while y != None and x == y.right: x = y y = y.parent return y def TreeInsert(self, T, z): y = None x = T.root while x != None: y = x if z.val < x.val: x = x.left else: x = x.right z.parent = y if y == None: T.root = z elif z.val < y.val: y.left = z else: y.right = z def InorderTreeWalk(self, x): if x != None: self.InorderTreeWalk(x.left) print x.val self.InorderTreeWalk(x.right) def Transplant(self, T, u, v): if u.parent == None: T.root = v elif u == u.parent.left: u.parent.left = v else: u.parent.right = v if v != None: v.parent = u.parent def TreeDelete(self, T, z): if z.left == None: self.Transplant(T, z, z.right) elif z.right == None: self.Transplant(T, z, z.left) else: y = self.TreeMinimum(z.right) if y.parent != z: self.Transplant(T,y,y.right) y.right = z.right y.right.parent = y self.Transplant(T, z, y) y.left = z.left y.left.p = y # root = TreeNode(15) T = Tree() nodes = [6,18,3,7,17,20,2,4,13,9] s = Solution() for node in nodes: s.TreeInsert(T,TreeNode(node)) s.InorderTreeWalk(T.root) s.TreeDelete(T, T.root) s.InorderTreeWalk(T.root)
相关文章推荐
- 算法导论快速排序python实现
- 用Python实现算法导论中的算法 序
- 【算法导论】八皇后问题的算法实现(C、MATLAB、Python版)
- 算法导论——(2)二叉查找树的实现
- 算法导论:分治法,python实现合并排序MERGE-SORT
- 二叉查找树相关算法实现(算法导论12章)
- 关于二叉查找树中的某个节点的前趋和后继的算法(Python实现)
- 算法导论详解(1) 第二章算法基础+python实现
- 【算法导论】八皇后问题的算法实现(C、MATLAB、Python版)
- 【算法导论】二叉查找树的操作C++实现
- 二叉查找树——算法导论第12章简易代码实现~
- PyCon 2011 - Hidden Treasures of the Python Standard Library - 模拟hmac摘要算法的实现
- 优化算法--以Python实现(2)
- 基于python的分词算法的实现(2) - 字典的选择
- 基于python的分词算法的实现(1) - 算法
- 猴王算法精简版 Python实现
- 基于随机游走的社团划分算法label progation 的python实现
- 算法:求从1到n这n个整数的十进制表示中1出现的次数-- python 实现
- C++ 归并排序实现(算法导论)
- 基于python的分词算法的实现(3) - 建立字典