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赋值操作方法分享
Mar 23 Python
Python数据结构之双向链表的定义与使用方法示例
Jan 16 Python
对Python中9种生成新对象的方法总结
May 23 Python
tensorflow 输出权重到csv或txt的实例
Jun 14 Python
在django admin中添加自定义视图的例子
Jul 26 Python
python编写计算器功能
Oct 25 Python
keras中模型训练class_weight,sample_weight区别说明
May 23 Python
Python闭包及装饰器运行原理解析
Jun 17 Python
python能自学吗
Jun 18 Python
python如何建立全零数组
Jul 19 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
Sep 29 Python
Python爬取某平台短视频的方法
Feb 08 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
让你同时上传 1000 个文件 (二)
2006/10/09 PHP
PHP读取ACCESS数据到MYSQL的代码
2011/05/11 PHP
PHP学习笔记之数组篇
2011/06/28 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
创建无限极分类树型结构的简单方法
2017/06/20 PHP
php 获取xml接口数据的处理方法
2018/05/31 PHP
javascript instanceof 内部机制探析
2010/10/15 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
AngularJS语法详解(续)
2015/01/23 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
2015/03/01 Javascript
JavaScript Function函数类型介绍
2015/04/08 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
不用一句js代码初始化组件
2016/01/27 Javascript
js时间比较 js计算时间差的简单实现方法
2016/08/26 Javascript
jQuery 如何实现一个滑动按钮开关
2016/12/01 Javascript
JS实现动画兼容性的transition和transform实例分析
2016/12/13 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
2016/12/14 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
2017/05/15 jQuery
vue如何从接口请求数据
2017/06/22 Javascript
基于JavaScript实现无缝滚动效果
2017/07/21 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
vue如何判断dom的class
2018/04/26 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
vue 实现element-ui中的加载中状态
2020/11/11 Javascript
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
利用python 更新ssh 远程代码 操作远程服务器的实现代码
2018/02/08 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
整个世界的设计师家具在哈恩:Designathome
2019/03/25 全球购物
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
食堂个人先进事迹
2014/01/22 职场文书
2014迎国庆标语大全
2014/09/19 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
Python 阶乘详解
2021/10/05 Python
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript