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

python 实现的 binary tree

2012-02-18 21:25 253 查看
使用python 实现的 binary tree,代码如下:

#!/usr/bin/python

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

	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 insert(node,value):
	if value > node.data:
		if node.right:
			insert(node.right,value)
		else:
			node.insertRight(value)
	elif value == node.data:
		print str(value)+" already in btree"
	else:
		if node.left:
			insert(node.left,value)
		else:
			node.insertLeft(value)

def preorder(node):
	if node.data:
		node.show()
		if node.left:
			preorder(node.left)
		if node.right:
			preorder(node.right)

def inorder(node):
	if node.data:
		if node.left:
			inorder(node.left)
		
		node.show()
		
		if node.right:
			inorder(node.right)

def postorder(node):
	if node.data:
		if node.left:
			postorder(node.left)
		if node.right:
			postorder(node.right)
		node.show()

if __name__ == "__main__":
	
	l = []
	for i in xrange(25):
		l.append(i+1)
	print l
	bt = btree(l[0])
	
	for i in l:
		insert(bt,i)

	"""
	bt = btree('root')
	a = bt.insertLeft('a')
	c = a.insertLeft('c') 
	d = a.insertRight('d')

	f = d.insertLeft('f')
	g = d.insertRight('g')
	
	b = bt.insertRight('b')
	e = b.insertRight('e')"""

	print "\n=============preorder=============="
	preorder(bt)

	print "\n=============inorder==============="
	inorder(bt)

	print "\n=============postorder============="
	postorder(bt)

"""
	bt.show()
	a.show()
	bt.left.show()

	b.show()
	bt.right.show()   """
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: