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基础教程之实现石头剪刀布游戏示例
Feb 11 Python
在Python 3中实现类型检查器的简单方法
Jul 03 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
Mar 13 Python
python 3.6.5 安装配置方法图文教程
Sep 18 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
如何基于Python创建目录文件夹
Dec 31 Python
TensorFLow 不同大小图片的TFrecords存取实例
Jan 20 Python
利用python中集合的唯一性实现去重
Feb 11 Python
Python3运算符常见用法分析
Feb 14 Python
opencv之颜色过滤只留下图片中的红色区域操作
Jun 05 Python
Python headers请求头如何实现快速添加
Nov 03 Python
Pandas实现DataFrame的简单运算、统计与排序
Mar 31 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 中文和编码判断代码
2010/05/16 PHP
解析php中var_dump,var_export,print_r三个函数的区别
2013/06/21 PHP
Symfony2在Nginx下的配置方法图文教程
2016/02/04 PHP
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
2011/08/23 Javascript
九种js弹出对话框的方法总结
2013/03/12 Javascript
js将json格式内容转换成对象的方法
2013/11/01 Javascript
删除javascript中注释语句的正则表达式
2014/06/11 Javascript
javascript实现全局匹配并替换的方法
2015/04/27 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
基于vue2.0+vuex+localStorage开发的本地记事本示例
2017/02/28 Javascript
javascript合并两个数组最简单的实现方法
2019/09/14 Javascript
vue项目接口域名动态获取操作
2020/08/13 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
python模拟Django框架实例
2016/05/17 Python
全面了解Python环境配置及项目建立
2016/06/30 Python
解决pyqt5中QToolButton无法使用的问题
2019/06/21 Python
python在不同条件下的输入与输出
2020/02/13 Python
django-利用session机制实现唯一登录的例子
2020/03/16 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
html5定制表单_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5 中新的全局属性(整理)
2013/07/31 HTML / CSS
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
FOREO斐珞尔官方旗舰店:LUNA露娜洁面仪
2018/03/11 全球购物
伦敦新晋轻奢耳饰潮牌:Tada & Toy
2020/05/25 全球购物
学前教育毕业生自荐信范文
2013/12/24 职场文书
高三高考决心书
2014/03/11 职场文书
搞笑爱情保证书
2014/04/29 职场文书
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
2014年人事专员工作总结
2014/11/19 职场文书
优秀党务工作者先进事迹材料
2014/12/25 职场文书
2016年乡镇综治宣传月活动总结
2016/03/16 职场文书
2016年庆祝六一儿童节活动总结
2016/04/06 职场文书
SpringBoot 集成Redis 过程
2021/06/02 Redis