python数据结构之二叉树的建立实例


Posted in Python onApril 29, 2014

先建立二叉树节点,有一个data数据域,left,right 两个指针域

# -*- coding: utf - 8 - *-                 
class TreeNode(object):
    def __init__(self, left=0, right=0, data=0):
        self.left = left
        self.right = right
        self.data = data
class BTree(object):    def __init__(self, root=0):
        self.root = root

手动建立二叉树

node1 = TreeNode(data=1)
node2 = TreeNode(node1, 0, 2)
node3 = TreeNode(data=3)
node4 = TreeNode(data=4)
node5 = TreeNode(node3, node4, 5)
node6 = TreeNode(node2, node5, 6)
node7 = TreeNode(node6, 0, 7)
node8 = TreeNode(data=8)
root = TreeNode(node7, node8, 'root')
bt = BTree(root)

然后会生成下面的二叉树
# 生成的二叉树# ------------------------
#          root
#       7        8
#     6
#   2   5
# 1    3 4
#
# -------------------------

除了 手动一个个的制定 node 节点,还可以创建一个 create 方法,接受用户输入添加二叉树节点。。。使用前续方式添加 ,代码如下:

# -*- coding: utf - 8 - *-           
class TreeNode(object):
    def __init__(self, left=0, right=0, data=0):
        self.left = left
        self.right = right
        self.data = data
           
class BTree(object):
    def __init__(self, root=0):
        self.root = root
    def is_empty(self):
        if self.root is 0:
            return True
        else:
            return False
    def create(self):
        temp = input('enter a value:')
        if temp is '#':
            return 0
        treenode = TreeNode(data=temp)
        if self.root is 0:
            self.root = treenode
        treenode.left = self.create()
        treenode.right = self.create()

使用create创建二叉树

#运行文件 在交互解释器下面运行bt = BTree()
bt.create()
enter a value:9
enter a value:7
enter a value:6
enter a value:2
enter a value:1
enter a value:'#'
enter a value:'#'
enter a value:'#'
enter a value:5
enter a value:3
enter a value:'#'
enter a value:'#'
enter a value:4
enter a value:'#'
enter a value:'#'
enter a value:'#'
enter a value:8
enter a value:'#'
enter a value:'#'

通过 create 也可以得到同样的效果

Python 相关文章推荐
python安装与使用redis的方法
Apr 19 Python
Python字典简介以及用法详解
Nov 15 Python
tensorflow识别自己手写数字
Mar 14 Python
Python logging模块用法示例
Aug 28 Python
python面试题小结附答案实例代码
Apr 11 Python
django框架面向对象ORM模型继承用法实例分析
Jul 29 Python
简单了解python中的与或非运算
Sep 18 Python
基于python实现从尾到头打印链表
Nov 02 Python
python飞机大战pygame游戏之敌机出场实现方法详解
Dec 17 Python
提升python处理速度原理及方法实例
Dec 25 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
Jun 02 Python
python非标准时间的转换
Jul 25 Python
python数据结构树和二叉树简介
Apr 29 #Python
Python的ORM框架SQLAlchemy入门教程
Apr 28 #Python
Python中实现远程调用(RPC、RMI)简单例子
Apr 28 #Python
Python的ORM框架SQLObject入门实例
Apr 28 #Python
django自定义Field实现一个字段存储以逗号分隔的字符串
Apr 27 #Python
python监控网卡流量并使用graphite绘图的示例
Apr 27 #Python
python抓取网页图片示例(python爬虫)
Apr 27 #Python
You might like
无数据库的详细域名查询程序PHP版(4)
2006/10/09 PHP
一个简单计数器的源代码
2006/10/09 PHP
php 前一天或后一天的日期
2008/06/28 PHP
ThinkPHP框架分布式数据库连接方法详解
2017/03/14 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
从sohu弄下来的flash中展示图片的代码
2007/04/27 Javascript
js jquery ajax的几种用法总结(及优缺点介绍)
2014/01/28 Javascript
jQuery中[attribute!=value]选择器用法实例
2014/12/31 Javascript
jQuery前端分页示例分享
2015/02/10 Javascript
简介JavaScript中fixed()方法的使用
2015/06/08 Javascript
jQuery取消ajax请求的方法
2015/06/09 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
JavaScript实现移动端轮播效果
2017/06/06 Javascript
JavaScript中常见的八个陷阱总结
2017/06/28 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
浅谈Koa服务限流方法实践
2017/10/23 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
小程序Scroll-view上拉滚动刷新数据
2020/06/21 Javascript
vue中选中多个选项并且改变选中的样式的实例代码
2020/09/16 Javascript
pycharm远程调试openstack的图文教程
2017/11/21 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
如何理解python对象
2020/06/21 Python
python爬虫搭配起Bilibili唧唧的流程分析
2020/12/01 Python
利用Python过滤相似文本的简单方法示例
2021/02/03 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
希腊香水和化妆品购物网站:Parfimo.gr
2019/10/03 全球购物
北京银河万佳Java面试题
2012/03/21 面试题
安全生产计划书
2014/05/04 职场文书
党支部组织生活会整改方案
2014/09/30 职场文书
加强干部作风建设整改方案
2014/10/24 职场文书
老人院义工活动感想
2015/08/07 职场文书
【海涛教你打DOTA】黑鸟第一视角解说
2022/04/01 DOTA