• python 键值对的树实现


    #coding:utf-8
    __author__ = 'similarface'
    
    class KeyedBinaryTree:
        def __init__(self):self.tree=EmptyNode()
        def __repr__(self):return repr(self.tree)
        def lookup(self,key):return self.tree.lookup(key)
        def insert(self,key,val):self.tree=self.tree.insert(key,val)
    
    class EmptyNode:
        def __repr__(self):
            return '*'
        def lookup(self,key):
            return None
    
        def insert(self,key,val):
            return BinaryNode(self,key,val,self)
    
    class BinaryNode:
        def __init__(self,left,key,val,right):
            self.key,self.val=key,val
            self.left,self.right=left,right
    
        def lookup(self,key):
            if self.key==key:
                return self.val
            elif self.key>key:
                return self.left.lookup(key)
            else:
                return self.right.lookup(key)
        def insert(self,key,val):
            if self.key==key:
                self.val=val
            elif self.key>key:
                self.left=self.left.insert(key,val)
            elif self.key<key:
                self.right=self.right.insert(key,val)
            return self
    
        def __repr__(self):
            return ('(%s,%s=%s,%s)'%(repr(self.left),repr(self.key),repr(self.val),repr(self.right)))
    
    if __name__=='__main__':
        t=KeyedBinaryTree()
        for (key,val) in [('bbb',1),('aaa',2),('ccc',3)]:
            t.insert(key,val)
        print(t)
        print(t.lookup('aaa'),t.lookup('ccc'))
        t.insert('ddd',4)
        t.insert('aaa',5)
        print(t)
  • 相关阅读:
    arcEngine classic code(2)
    VisualGraph文档
    基于.net2 的CAD 绘图控件virtualGraph(2)
    沈阳三维GIS软件开发人员
    arcEngine + .net 2 AccessViolationException
    数据库事务并发带来的问题
    理解 WPF Dispatcher
    扇入与扇出
    IComparable 与 IComparer
    同步、异步、多线程
  • 原文地址:https://www.cnblogs.com/similarface/p/5128795.html
Copyright © 2020-2023  润新知