博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python实现二叉树的存储和遍历
阅读量:7221 次
发布时间:2019-06-29

本文共 2128 字,大约阅读时间需要 7 分钟。

首先应该了解几个概念:

满二叉树,完全二叉树,非完全二叉树,下图来自百度百科

 

 

代码实现

class Node(object):    """"树的节点类"""    def __init__(self, item):        self.item = item        # 记录左孩子        self.lChild = None        # 记录右孩子        self.rChild = Noneclass Tree(object):    """树"""    def __init__(self):        self.__root = None    # 添加节点    def add(self, item):        node = Node(item)        # 判断是否为空        if self.__root is None:            self.__root = node        else:            # 以队列的方式变量树            queue = []            queue.append(self.__root)            while queue:                cur = queue.pop(0)                if cur.lChild is None:                    cur.lChild = node                    return                if cur.rChild is None:                    cur.rChild = node                    return                queue.append(cur.lChild)                queue.append(cur.rChild)    # 广度优先遍历,层次遍历    def breath_travel(self):        if self.__root is None:            return        # 以队列的方式进行遍历        queue = []        queue.append(self.__root)        while queue:            cur = queue.pop(0)            print(cur.item)            if cur.lChild is not None:                queue.append(cur.lChild)            if cur.rChild is not None:                queue.append(cur.rChild)    # 深度优先遍历    def depth_travel(self):        self.post_order(self.__root)    # 后序    def post_order(self, node):        if node is None:            return        self.post_order(node.lChild)        self.post_order(node.rChild)        print(node.item, end=" ")    # 中序    def in_order(self, node):        if node is None:            return        self.in_order(node.lChild)        print(node.item, end=" ")        self.in_order(node.rChild)    # 先序    def pre_order(self, node):        if node is None:            return        print(node.item, end=" ")        self.pre_order(node.lChild)        self.pre_order(node.rChild)if __name__ == '__main__':    tree = Tree()    tree.add(0)    tree.add(1)    tree.add(2)    tree.add(3)    tree.add(4)    tree.add(5)    tree.add(6)    tree.add(7)    tree.add(8)    tree.add(9)    # tree.breath_travel()    tree.depth_travel()

 

转载地址:http://hzhym.baihongyu.com/

你可能感兴趣的文章
Android 上下文菜单
查看>>
Nginx实战基础篇四 通过https方式访问web服务器
查看>>
菜鸟篇-简单HttpClient
查看>>
MySQL中索引的限制
查看>>
数据库中DDL和DML说明
查看>>
我的友情链接
查看>>
squid 代理服务器
查看>>
Java实例变量、类变量与局部变量的区别
查看>>
网线的真假辨认
查看>>
zookeeper选举算法
查看>>
葵花宝典与学习之如何平稳的进入新技术领域
查看>>
IPV6 简单应用
查看>>
mysql重复字段中 --- 获得最后一次插入的记录
查看>>
Linux(CentOS)下配置安装Tomcat并配置JDK环境
查看>>
squid优化笔记 nginx正向代理的缺点
查看>>
Linux 之nginx 负载均衡集群
查看>>
编译nginx的要求与nginx的安装和启动,停止,平滑启动
查看>>
Android官方命令深入分析之绘制9-patch
查看>>
iPhone手机关闭ios10自动更新
查看>>
Devil fly
查看>>