Advantage: Comparing fixed length of binary corresponds a character, this method can save memory.
class node:
def __init__(self, value = '', left = None, right = None, parent = None):
self.left = left
self.right = right
self.parent = parent
self.value = value
self.seq_bin = ''
def parentFromChildren(left, right, value):
parent = node(value, left, right,)
left.parent = parent
right.parent = parent
return parent
a = node('a')
b = node('b')
c = node('c')
d = node('d')
e = node('e')
ab = parentFromChildren(a,b,'ab')
cd = parentFromChildren(c,d,'cd')
cde = parentFromChildren(cd,e,'cde')
abcde = parentFromChildren(ab,cde,'abcde')
def create_binary_seq(node):
if node.left != None:
node.left.seq_bin = node.seq_bin + '0'
create_binary_seq(node.left)
node.right.seq_bin = node.seq_bin + '1'
create_binary_seq(node.right)
return
def show_graph(node):
if node.left != None:
print(node.left.value + " " + node.left.seq_bin + " ||"+ node.value + " "+ node.seq_bin + " ||" + node.right.value + " " + node.right.seq_bin)
show_graph(node.left)
show_graph(node.right)
create_binary_seq(abcde)
char_bin = {'a' : a.seq_bin, 'b' : b.seq_bin, 'c' : c.seq_bin, 'd' : d.seq_bin, 'e' : e.seq_bin}
def list_bin(list):
binarylist = ''
for c in list:
binarylist = binarylist + char_bin[c]
return binarylist
binary_list = list_bin("aabedccea")
print(char_bin)
print(binary_list)
def bin_list(binarylist,root):
n = root
charlist = ''
for c in binary_list:
if c == '0':
n = n.left
else:
n = n.right
if n.left == None:
charlist = charlist + n.value
n = root
return charlist
charlist = bin_list("000001111011001001100",abcde)
print(charlist)
#show_graph(abcde)
浙公网安备 33010602011771号