python 树形结构

来源:互联网 发布:视频文字特效制作软件 编辑:程序博客网 时间:2024/06/05 17:03

1. 使用dictionary 实现二叉排序树

python 代码:

#!/usr/bin/python# -*- coding: utf-8 -*-# python 二叉树def create_btree( e ):    root = {"v":e[0], "left":None, "right":None}    for i in e[1:-1]:        insert(root, i)    return rootdef insert(root, i):    if i==root["v"]:        return    if i<root["v"]:        if root["left"] != None:            insert(root["left"], i)        else:            root["left"] = {"v":i, "left":None, "right":None}    if i>root["v"]:        if root["right"] != None:            insert(root["right"], i)        else:            root["right"] = {"v":i, "left":None, "right":None}def pre_order(root):    if root==None:        return    pre_order( root["left"] )    print( root["v"] )    pre_order( root["right"] )if __name__ == '__main__':    l = [ 1, 3, 2, -1, 5, 8 ]    pre_order( create_btree(l) )

result:



2. 使用类来实现二叉排序树

 #!/usr/bin/python# -*- coding: utf-8 -*-# python 二叉树# 类Node class Node:    def __init__( self, v = None ):        self.v = v         self.left = None         self.right = None # 类TReeclass Tree:    def __init__( self ):        self.root = Node()    def build(self, e ):        for i in e:            self.insert(self.root, i )        def insert(self,root,i):        if root.v == None:            root.v = i            return         if root.v == i:            return         if i < root.v :            if root.left != None:                self.insert(root.left, i)            else:                root.left = Node( i )        if i > root.v:            if root.right != None:                self.insert(root.right, i)            else:                root.right = Node( i )        def in_order(self):        self.in_order_traval( self.root )    def in_order_traval(self, root):        if None == root or None == root.v:            return        self.in_order_traval( root.left )        print( root.v )        self.in_order_traval( root.right )if __name__ == '__main__':    l = [ 1, 3, 2, -1, 5, 8 ]        tree = Tree()    tree.build( l )    tree.in_order()

运行结果: