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文件右键找不到IDLE打开项解决办法
Jun 08 Python
Python3.6.2调用ffmpeg的方法
Jan 10 Python
Python 抓取微信公众号账号信息的方法
Jun 14 Python
pytorch中nn.Conv1d的用法详解
Dec 31 Python
Windows下python3安装tkinter的问题及解决方法
Jan 06 Python
python如何基于redis实现ip代理池
Jan 17 Python
Python ATM功能实现代码实例
Mar 19 Python
文件上传服务器-jupyter 中python解压及压缩方式
Apr 22 Python
Python Sqlalchemy如何实现select for update
Oct 12 Python
Python提取视频中图片的示例(按帧、按秒)
Oct 22 Python
Python如何批量生成和调用变量
Nov 21 Python
Python实现生活常识解答机器人
Jun 28 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在XP下IIS和Apache2服务器上的安装
2006/09/05 PHP
php 随机生成10位字符代码
2009/03/26 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
前端必学之PHP语法基础
2016/01/01 PHP
Symfony生成二维码的方法
2016/02/04 PHP
PHP进行批量任务处理不超时的解决方法
2016/07/11 PHP
wordpress网站转移到本地运行测试的方法
2017/03/15 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
JavaScript 验证浏览器是否支持javascript的方法小结
2009/05/17 Javascript
jquery JSON的解析方式
2009/07/25 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
js正则表达式验证密码强度【推荐】
2017/03/03 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
vue实现点击图片放大效果
2017/08/15 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
2018/08/24 Javascript
checkbox在vue中的用法小结
2018/11/13 Javascript
Javascript 模拟mvc实现点餐程序案例详解
2020/12/24 Javascript
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
Python JSON格式数据的提取和保存的实现
2019/03/22 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
Pandas分组与排序的实现
2019/07/23 Python
python代码实现猜拳小游戏
2020/11/30 Python
python 实现Harris角点检测算法
2020/12/11 Python
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
linux面试题参考答案(7)
2012/10/29 面试题
母亲七十大寿答谢词
2014/01/18 职场文书
药品促销活动方案
2014/02/14 职场文书
企业文化建设实施方案
2014/03/22 职场文书
市场开发计划书
2014/05/07 职场文书
如何写贫困证明申请书
2014/10/29 职场文书
政风行风整改报告
2014/11/06 职场文书
师德师风学习材料
2014/12/19 职场文书
综合素质自我评价评语
2015/03/06 职场文书
投诉信回复范文
2015/07/03 职场文书
ObjectMapper 如何忽略字段大小写
2021/06/29 Java/Android