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)

  

 

posted on 2026-07-27 16:23  Rabbit_XIN  阅读(0)  评论(0)    收藏  举报