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 Mysql自动备份脚本
Jul 14 Python
初步理解Python进程的信号通讯
Apr 09 Python
Django数据库操作的实例(增删改查)
Sep 04 Python
Python实现PS滤镜的万花筒效果示例
Jan 23 Python
Python使用lambda表达式对字典排序操作示例
Jul 25 Python
python中bytes和str类型的区别
Oct 21 Python
Django异步任务线程池实现原理
Dec 17 Python
Python 实现打印单词的菱形字符图案
Apr 12 Python
基于Python中random.sample()的替代方案
May 23 Python
python+requests接口自动化框架的实现
Aug 31 Python
如何利用Python matplotlib绘制雷达图
Dec 21 Python
python中pdb模块实例用法
Jan 15 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连接mssql:pdo odbc sql server
2011/07/20 PHP
解析PHP跨站刷票的实现代码
2013/06/18 PHP
php判断两个浮点数是否相等的方法
2015/03/14 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
Yii框架函数简单用法分析
2019/09/09 PHP
ThinkPHP5&5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
2013/12/05 Javascript
js常用数组操作方法简明总结
2014/06/20 Javascript
JS简单实现城市二级联动选择插件的方法
2015/08/19 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
2016/05/31 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
2016/12/09 Javascript
vue实现百度搜索下拉提示功能实例
2017/06/14 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
Vue下的国际化处理方法
2017/12/18 Javascript
微信小程序实现聊天对话(文本、图片)功能
2018/07/06 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
2019/12/06 Javascript
js实现圆形显示鼠标单击位置
2020/02/11 Javascript
Python列表和元组的定义与使用操作示例
2017/07/26 Python
对python文件读写的缓冲行为详解
2019/02/13 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
瑞典的玛丽小姐:Miss Mary of Sweden
2019/02/13 全球购物
GOLFINO英国官网:高尔夫服装
2020/04/11 全球购物
迟到检讨书1000字
2014/01/15 职场文书
机电一体化求职信
2014/03/10 职场文书
竞争与合作演讲稿
2014/05/12 职场文书
法人委托书范本
2014/09/15 职场文书
大学军训自我鉴定大全
2014/09/18 职场文书
Navicat for MySQL的使用教程详解
2021/05/27 MySQL
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
一篇文章了解正则表达式的替换技巧
2022/02/24 Javascript
Golang 实现WebSockets
2022/04/24 Golang