python BST
来源:互联网 发布:vmware 桥接网络 编辑:程序博客网 时间:2024/05/21 10:58
http://blog.csdn.net/l153097889/article/details/46774725
#-------------------------------------------------------------------------------# Name: BinarySearchTree# Purpose: 非平衡二叉搜索树## Author: M.E.Liu## Created: 12/07/2015# Copyright: (c) M.E.Liu 2015# Licence: <Artificial Intelligence Lab of HUST>#-------------------------------------------------------------------------------import BinaryTree as BTreeclass BinarySearchTree(BTree.BinaryTree): def __init__(self,root=0,count=0,height=0): BTree.BinaryTree.__init__(self,root,count,height) def insertNode(self,treenode): if treenode==0: return if self.root==0: self.root = treenode return self.count += 1 currentNode = self.root while currentNode : if currentNode.data<treenode.data: if currentNode.right==0: currentNode.right = treenode return else: currentNode = currentNode.right elif currentNode.data>treenode.data: if currentNode.left==0: currentNode.left = treenode return else: currentNode = currentNode.left def delNode(self,currentnode,data): if not currentnode.left and not currentnode.right: currentnode.data = None return 'leaf' if currentnode.data is data: if currentnode.left and currentnode.right: rightnode = currentnode.right rightparent = rightnode while rightnode.left: rightparent = rightnode rightnode = rightnode.left currentnode.data = rightnode.data if self.delNode(rightnode,rightnode.data) is 'leaf': rightparent.left = None return 'node' else: direction = 0 if currentnode.left else 1 node = currentnode[direction] currentnode.data = node.data if self.delNode(node,node.data) is 'leaf': currentnode[direction] = None return 'node' else: parent = currentnode direction = 0 if currentnode.data > data else 1 currentnode = parent[direction] if self.delNode(currentnode,data) is 'leaf': parent[direction] = Nonedef main(): n8 = BTree.BinaryTreeNode(8,0,0) n6 = BTree.BinaryTreeNode(6,0,0) n15 = BTree.BinaryTreeNode(15,0,0) n13 = BTree.BinaryTreeNode(13,0,0) n11 = BTree.BinaryTreeNode(11,0,0) n9 = BTree.BinaryTreeNode(9,0,0) n5 = BTree.BinaryTreeNode(5,0,0) n3 = BTree.BinaryTreeNode(3,0,0) n1 = BTree.BinaryTreeNode(1,0,0) n7 = BTree.BinaryTreeNode(7,n5,n8) n14 = BTree.BinaryTreeNode(14,n13,n15) n10 = BTree.BinaryTreeNode(10,0,n11) n12 = BTree.BinaryTreeNode(12,n10,n14) n2 = BTree.BinaryTreeNode(2,n1,n3) n4 = BTree.BinaryTreeNode(4,n2,n7) n9 = BTree.BinaryTreeNode(9,n4,n12) root = n9 bt = BinarySearchTree(root) bt.insertNode(n6) bt.delNode(root,12) bt.delNode(root,9) bt.midOrder(bt.root)## bt = BinarySearchTree()## for i in range(1,16):## exec("n"+str(i)+" = BTree.BinaryTreeNode("+str(i)+",0,0)")## exec("bt.insertNode(n"+str(i)+")")## bt.delNode(4)## bt.delNode(5)## bt.delNode(6)## bt.preOrder(bt.root)if __name__ == '__main__': main()
0 0
- python BST
- BST
- BST
- BST
- BST
- BST
- BST
- bst
- BST
- BST
- BST
- BST
- BST
- BST
- BST
- python--leetcode538. Convert BST to Greater Tree
- cracking the code interview convert array to BST Python
- [leetcode: Python]235. Lowest Common Ancestor of a BST
- poj2886--Who Gets the Most Candies?(线段树+反素数)
- 开博记念及附上第一个android工程:Txt文本阅读器
- 黑马程序员-IOS学习笔记 折半查找 在数组中插入一个数返回index
- JAVA简单成绩计算平均分(含文件读取)
- 关于SVG图片不显示
- python BST
- stl之stack
- Window7 家庭版 IIS 配置
- linux文件结构
- GCD编程(封装GCD)
- RS232
- linux文件目录权限
- 安卓widget的详解
- iOS在当前视图中推出另外一个背景透明的视图控制器