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文件操作类操作实例详解
Jul 11 Python
Python基于identicon库创建类似Github上用的头像功能
Sep 25 Python
python读取文本中数据并转化为DataFrame的实例
Apr 10 Python
python监控进程脚本
Apr 12 Python
Python3.6实现连接mysql或mariadb的方法分析
May 18 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
Aug 07 Python
python中通过selenium简单操作及元素定位知识点总结
Sep 10 Python
python连接PostgreSQL数据库的过程详解
Sep 18 Python
TensorFlow内存管理bfc算法实例
Feb 03 Python
python实现将字符串中的数字提取出来然后求和
Apr 02 Python
Python OpenCV实现测量图片物体宽度
May 27 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
Apr 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
web方式ftp
2006/10/09 PHP
用PHP读取flv文件的播放时间长度
2009/09/03 PHP
PHP关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
最新版本PHP 7 vs HHVM 多角度比较
2016/02/14 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
PHP实现通过CURL上传文件功能示例
2018/05/30 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
jQuery 跨域访问问题解决方法
2009/12/02 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
2013/03/04 Javascript
jQuery实现拖拽效果插件的方法
2015/03/23 Javascript
Angular通过angular-cli来搭建web前端项目的方法
2017/07/27 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
Vue 全家桶实现移动端酷狗音乐功能
2018/11/16 Javascript
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
python爬虫之百度API调用方法
2017/06/11 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
Python列表切片操作实例总结
2019/02/19 Python
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
吃透移动端 Html5 响应式布局
2019/12/16 HTML / CSS
IdealFit官方网站:女性蛋白质、补充剂和运动服装
2019/03/24 全球购物
C#笔试题
2015/07/14 面试题
为什么需要版本控制
2016/10/28 面试题
门卫班长岗位职责
2013/12/15 职场文书
《圆明园的毁灭》教学反思
2014/02/28 职场文书
马丁路德金演讲稿
2014/05/19 职场文书
销售顾问工作计划书
2014/08/15 职场文书
八荣八耻演讲稿
2014/09/15 职场文书
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL
Nginx的gzip相关介绍
2022/05/11 Servers
MySQL存储过程及语法详解
2022/08/05 MySQL