All pastes #355576 Raw Edit

Something

public text v1 · immutable
·published 2007-02-14 16:10 UTC
rendered paste body
# -*- coding: utf8 -*-
import os, sys, math, copy

class node:
	value = 0
	id = 0
	parent_left = None
	parent_right = None
	bit = 0
	
	def __init__( self, id, value, left=None, right=None ):
		self.id = id
		self.value = value
		self.parent_left = left
		self.parent_right = right
		if right is not None:
			right.bit = 1
		
	def __repr__( self ):
		return "<node id='%s' bit='%s' value='%s'>"%( self.id, self.bit, self.value )
	
	def __cmp__( self, node2 ):
		if self.value < node2.value:
			return -1
		elif self.value == node2.value:
			return -1
		else:
			return 1

class tree:
	def __init__( self, sequence ):
		self.seq = sequence
		self.head = []
		self.tree = []
		
		self.size = 0
		for item in sequence:
			self.head.append( node( item[0], item[1] ) )
			self.size += item[1]
		
		value = 0
		while value < self.size:
			self.head.sort()
			value = self.head[0].value+self.head[1].value
			if value < self.size:
				self.head[0] = node( 0, value, self.head[0], self.head[1] )
				del self.head[1]
		else:
			self.begin = node( 0, value, self.head[-1], self.head[-2] )
			
if __name__ == "__main__":
	seq = [ ( "A", 8 ), ("B", 7 ), ("C", 12 ), ("D", 9 ), ("E", 15) ]
	t = tree( seq )
	print t.begin.parent_left.parent_left.parent_right