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写入CSV文件的方法
Jul 08 Python
浅谈Python 中整型对象的存储问题
May 16 Python
关于python2 csv写入空白行的问题
Jun 22 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
Nov 30 Python
Django密码系统实现过程详解
Jul 19 Python
关于django 1.10 CSRF验证失败的解决方法
Aug 31 Python
python元组和字典的内建函数实例详解
Oct 22 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
Oct 24 Python
pytorch 模型的train模式与eval模式实例
Feb 20 Python
python 写函数在一定条件下需要调用自身时的写法说明
Jun 01 Python
如何在pycharm中安装第三方包
Oct 27 Python
pycharm配置安装autopep8自动规范代码的实现
Mar 02 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
DOMXML函数笔记
2006/10/09 PHP
php生成curl命令行的方法
2015/12/14 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
PHP htmlspecialchars()函数用法与实例讲解
2019/03/08 PHP
PHP7.3.10编译安装教程
2019/10/08 PHP
Javascript & DHTML 实例编程(教程)基础知识
2007/06/02 Javascript
jQuery 表单验证扩展(三)
2010/10/20 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
javascript搜索框效果实现方法
2015/05/14 Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
2016/05/17 Javascript
HTML5开发Kinect体感游戏的实例应用
2017/09/18 Javascript
vue观察模式浅析
2018/09/25 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
命令行批量截图Node脚本示例代码
2019/01/25 Javascript
微信小程序实现单个或多个倒计时功能
2020/11/01 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
2020/11/30 Javascript
深入理解Python中的super()方法
2017/11/20 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
python按比例随机切分数据的实现
2019/07/11 Python
python3模拟实现xshell远程执行liunx命令的方法
2019/07/12 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
django实现更改数据库某个字段以及字段段内数据
2020/03/31 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
美国在线购买空气净化器、除湿器、加湿器网站:AllergyBuyersClub
2021/03/16 全球购物
高中毕业生生活的自我评价
2013/12/08 职场文书
应届毕业生如何写求职信
2014/02/16 职场文书
道德演讲稿
2014/05/21 职场文书
银行求职信
2014/05/31 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
租车协议书
2015/01/27 职场文书
淮海战役观后感
2015/06/11 职场文书
2016年母亲节寄语
2015/12/04 职场文书
入党转正申请书范文
2019/05/20 职场文书
CSS 还能这样玩?奇思妙想渐变的艺术
2021/04/27 HTML / CSS
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android