py下的二叉树

原理:

二叉树的先序遍历、后序遍历、中序遍历。。。

代码:

一、py原生数据结构硬实现:
class Node():
    def __init__(self,index):
        self.index = index
        self.left  = None
        self.right = None
        
    def __str__(self):
        return '%s'%self.index

class Tree():
    def __init__(self,nodes):
        self.nodes = nodes
    
    def pre(self,node):
        print(node)
        if node.left is not None:self.pre(node.left)
        if node.right is not None:self.pre(node.right)
    
    def lrd(self,node):
        if node.left  is not None:self.lrd(node.left)
        if node.right is not None:self.lrd(node.right)
        print(node)
    
    def ldr(self,node):
        if node.left  is not None:self.ldr(node.left)
        print(node)
        if node.right is not None:self.ldr(node.right)
运行一下:
nodes = [Node(i) for i in range(8)]
nodes[0].left  = nodes[1]
nodes[0].right = nodes[2]
nodes[1].left  = nodes[3]
nodes[1].right = nodes[4]
nodes[2].left  = nodes[5]
nodes[2].right = nodes[6]
nodes[6].left  = nodes[7]
tree = Tree(nodes)
print('先序遍历:')
tree.pre(nodes[0])
print('后序遍历:')
tree.lrd(nodes[0])
print('中序遍历:')
tree.ldr(nodes[0])
运行结果:
先序遍历
01342567后序遍历
34157620中序遍历
31405276
二、用轮子实现:

py的 networkx 是个很棒的网络图数据结构库,用法见
http://www.cnblogs.com/gispathfinder/p/5790949.html 的翻译:

import networkx as nx
import matplotlib.pyplot as plt
t = nx.Graph()
t.add_nodes_from(range(8))
t.add_edges_from([(0,1),(0,2),(1,3),(1,4),(2,5),(2,6),(6,7)])
nx.draw_networkx(t)
运行一下:
networkx

6行低37行,还顺便画个图给你看,不要太方便有没有!有了轮子谁还傻呵呵自己硬写原生代码啊,所以个人认为只要知道原生代码怎么写的,只用写一次,以后就大胆的用轮子加速我们码字吧!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容