Python探索之创建二叉树
问题
创建一个二叉树
二叉树有限多个节点的集合,这个集合可能是:
空集
由一个根节点,和两棵互不相交的,分别称作左子树和右子树的二叉树组成
创建二叉树,创建节点,再创建节点之间的关系
Python代码示例
# !/usr/bin/env python # -*-encoding: utf-8-*- # author:LiYanwei # version:0.1 class TreeNode(object): def __init__ (self, data, left = None, right = None): self.data = data self.left = left self.right = right def __str__(self): return str(self.data) A = TreeNode('A') B = TreeNode('B') C = TreeNode('C') D = TreeNode('D') A.left = B A.right = C B.right = D print B.right
总结
以上就是本文关于Python探索之创建二叉树的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Python探索之修改Python搜索路径、浅谈python中copy和deepcopy中的区别、python实现微信接口(itchat)详细介绍等,有什么问题,欢迎大家留言交流讨论。
相关推荐
-
Python实现二叉树结构与进行二叉树遍历的方法详解
二叉树的建立 使用类的形式定义二叉树,可读性更好 class BinaryTree: def __init__(self, root): self.key = root self.left_child = None self.right_child = None def insert_left(self, new_node): if self.left_child == None: self.left_child = BinaryTree(new_node) else: t = BinaryTr
-
Python中的二叉树查找算法模块使用指南
python中的二叉树模块内容: BinaryTree:非平衡二叉树 AVLTree:平衡的AVL树 RBTree:平衡的红黑树 以上是用python写的,相面的模块是用c写的,并且可以做为Cython的包. FastBinaryTree FastAVLTree FastRBTree 特别需要说明的是:树往往要比python内置的dict类慢一些,但是它中的所有数据都是按照某个关键词进行排序的,故在某些情况下是必须使用的. 安装和使用 安装方法 安装环境: ubuntu12.04, py
-
python数据结构之二叉树的遍历实例
遍历方案 从二叉树的递归定义可知,一棵非空的二叉树由根结点及左.右子树这三个基本部分组成.因此,在任一给定结点上,可以按某种次序执行三个操作: 1).访问结点本身(N) 2).遍历该结点的左子树(L) 3).遍历该结点的右子树(R) 有次序: NLR.LNR.LRN 遍历的命名 根据访问结点操作发生位置命名:NLR:前序遍历(PreorderTraversal亦称(先序遍历)) --访问结点的操作发生在遍历其左右子树之前.LNR:中序遍历(InorderTraversal)
-
python数据结构之二叉树的统计与转换实例
一.获取二叉树的深度 就是二叉树最后的层次,如下图: 实现代码: 复制代码 代码如下: def getheight(self): ''' 获取二叉树深度 ''' return self.__get_tree_height(self.root) def __get_tree_height(self, root): if root is 0: return 0 if root.left is 0 and root.righ
-
Python利用前序和中序遍历结果重建二叉树的方法
本文实例讲述了Python利用前序和中序遍历结果重建二叉树的方法.分享给大家供大家参考,具体如下: 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 这道题比较容易,前序遍历的结果中,第一个结点一定是根结点,然后在中序遍历的结果中查找这个根结点,根结点左边的就是左子树,根结点右边的就是右子树,递归构造出左.右子树即可.示意图如图所示: 利用前序和中序遍历的结果重建二叉树 Python代码: # coding: utf-8 ''
-
Python探索之创建二叉树
问题 创建一个二叉树 二叉树有限多个节点的集合,这个集合可能是: 空集 由一个根节点,和两棵互不相交的,分别称作左子树和右子树的二叉树组成 创建二叉树,创建节点,再创建节点之间的关系 Python代码示例 # !/usr/bin/env python # -*-encoding: utf-8-*- # author:LiYanwei # version:0.1 class TreeNode(object): def __init__ (self, data, left = None, right
-
如何在Python中创建二叉树
前言 本文的内容是数据结构中二叉树部分最基础的,之所以写一下主要是为了方便刷题的时候,能够在自己电脑上很快的使用这种小的demo进行复杂的练习. 二叉树节点定义 二叉树的节点定义如下: class TreeNode():#二叉树节点 def __init__(self,val,lchild=None,rchild=None): self.val=val #二叉树的节点值 self.lchild=lchild #左孩子 self.rchild=rchild #右孩子 递归构建二叉树 本文使用的前序
-
Python探索之ModelForm代码详解
这是一个神奇的组件,通过名字我们可以看出来,这个组件的功能就是把model和form组合起来,对,你没猜错,相信自己的英语水平. 先来一个简单的例子来看一下这个东西怎么用: 比如我们的数据库中有这样一张学生表,字段有姓名,年龄,爱好,邮箱,电话,住址,注册时间等等一大堆信息,现在让你写一个创建学生的页面,你的后台应该怎么写呢? 首先我们会在前端一个一个罗列出这些字段,让用户去填写,然后我们从后天一个一个接收用户的输入,创建一个新的学生对象,保存 其实,重点不是这些,而是合法性验证,我们需要在前端
-
python探索之BaseHTTPServer-实现Web服务器介绍
在Python探索之SocketServer详解中我们介绍了Python标准库中的SocketServer模块,了解了要实现网络通信服务,就要构建一个服务器类和请求处理类.同时,该模块还为我们创建了不同的服务器类和请求处理类. 1.服务器类 BaseServer TCPServer(BaseServer) UDPServer(TCPServer) UnixStreamServer UnixDatagramServer 2.请求处理类 BaseRequestHandler StreamReques
-
Python探索之SocketServer详解
SocketServer,网络通信服务器,是Python标准库中的一个模块,其作用是创建网络服务器.SocketServer模块定义了一些类来处理诸如TCP.UDP.UNIX流和UNIX数据报之上的同步网络请求. SocketServer模块处理网络请求的功能,可以通过两个主要的类来实现:一个是服务器类,一个是请求处理类. 服务器类 处理通信问题,如监听一个套接字并接收连接等: 请求处理类 处理"协议"问题,如解释到来的数据.处理数据并把数据发回给客户端等. 这种实现将服务器的实现过程
-
Python探索之静态方法和类方法的区别详解
面相对象程序设计中,类方法和静态方法是经常用到的两个术语. 逻辑上讲:类方法是只能由类名调用:静态方法可以由类名或对象名进行调用. python staticmethod and classmethod Though classmethod and staticmethod are quite similar, there's a slight difference in usage for both entities: classmethod must have a reference to
-
Python探索之自定义实现线程池
为什么需要线程池呢? 设想一下,如果我们使用有任务就开启一个子线程处理,处理完成后,销毁子线程或等得子线程自然死亡,那么如果我们的任务所需时间比较短,但是任务数量比较多,那么更多的时间是花在线程的创建和结束上面,效率肯定就低了. 线程池的原理: 既然是线程池(Thread pool),其实名字很形象,就是把指定数量的可用子线程放进一个"池里",有任务时取出一个线程执行,任务执行完后,并不立即销毁线程,而是放进线程池中,等待接收下一个任务.这样内存和cpu的开销也比较小,并且我们
-
Python探索之Metaclass初步了解
先以一个大牛的一段关于Python Metapgramming的著名的话来做开头: Metaclasses are deeper magic than 99% of users should ever worry about. If you wonder whether you need them, you don't (the people who actually need them know with certainty that they need them, and don't nee
-
python先序遍历二叉树问题
问题 如何遍历一个二叉树 遍历二叉树就是访问二叉树的每一个节点 二叉树父结点下先左访问,先序遍历(根左右) 例如:遍历以下的二叉树 遍历结果:ABDECF Python代码示例 # !/usr/bin/env python # -*-encoding: utf-8-*- # author:LiYanwei # version:0.1 class TreeNode(object): ''' 二叉树类 ''' def __init__ (self, data, left = None, right
-
Python 递归式实现二叉树前序,中序,后序遍历
目录 1.前序遍历 2.中序遍历 3.后序遍历 4.测试 5.结果 6.补充 6.1N叉树前序遍历 记忆点: 前序:VLR 中序:LVR 后序:LRV 举例: 一颗二叉树如下图所示: 则它的前序.中序.后序遍历流程如下图所示: 1.前序遍历 class Solution: def preorderTraversal(self, root: TreeNode): def preorder(root: TreeNode): if not ro
随机推荐
- JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
- iis7中session丢失的解决方法小结
- spring boot中的静态资源加载处理方式
- PHP文件操作实现代码分享
- zf框架的数据库追踪器使用示例
- 深入C#任务管理器中应用程序选项隐藏程序本身的方法详解
- 数据结构 数组顺序存储详细介绍
- JavaScript的this关键字的理解
- MySQL行级锁、表级锁、页级锁详细介绍
- CentOS系统中安装MySQL和开启MySQL远程访问的方法
- MYSQL中 TYPE=MyISAM 错误的解决方法
- jQuery中bind,live,delegate与one方法的用法及区别解析
- javascript的几种继承方法介绍
- 让Apache Shiro保护你的应用
- Android 改变图标原有颜色和搜索框的实例代码
- Struts2的配置 struts.xml Action详解
- php和javascript之间变量的传递实现代码
- 详解vue组件基础
- php json转换相关知识(小结)
- iOS bounds学习笔记以及仿写UIScrollView部分功能详解