# python BST

http://blog.csdn.net/l153097889/article/details/46774725

#-------------------------------------------------------------------------------
# Name:        BinarySearchTree
# Purpose:     非平衡二叉搜索树
#
# Author:      M.E.Liu
#
# Created:     12/07/2015
# Licence:     <Artificial Intelligence Lab of HUST>
#-------------------------------------------------------------------------------

import BinaryTree as BTree

class 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] = None

def 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()


• 本文已收录于以下专栏：

## 二叉查找树python实现

1. 二叉查找树的定义： 左子树不为空的时候，左子树的结点值小于根节点，右子树不为空时，右子树的结点值大于根节点，左右子树分别为二叉查找树 2. 二叉查找树的最左边的结点即为最小值，要查找最小值，只需...
• u011608357
• 2014年06月29日 14:05
• 1753

## 二叉查找树BST总结

• ltyqljhwcm
• 2016年07月31日 22:59
• 1944

## python BST

http://blog.csdn.net/l153097889/article/details/46774725 #-----------------------------------------...
• l153097889
• 2015年07月11日 10:26
• 638

## python BST

http://blog.csdn.net/l153097889/article/details/46774725 #-----------------------------------------...
• l153097889
• 2015年07月11日 10:26
• 638

## [leetcode] 285. Inorder Successor in BST 解题报告

• qq508618087
• 2016年03月14日 14:39
• 2020

## LeetCode 285. Inorder Successor in BST

• jmspan
• 2016年04月15日 00:35
• 498

• sinat_26917383
• 2017年09月20日 19:22
• 1148

## BST判断

• u014174955
• 2016年03月14日 19:03
• 129

## bst三种遍历及其他

#include #include //using stack; using namespace std; struct Node { int data; Node *left; Node...
• fall221
• 2013年09月10日 13:53
• 1179

## Leetcode-530. Minimum Absolute Difference in BST

• mcf171
• 2017年02月26日 13:38
• 527

举报原因： 您举报文章：python BST 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)