Python实现树的先序、中序、后序排序算法示例
本文实例讲述了Python实现树的先序、中序、后序排序算法。分享给大家供大家参考,具体如下:
#encoding=utf-8
class Tree():
def __init__(self,leftjd=0,rightjd=0,data=0):
self.leftjd = leftjd
self.rightjd = rightjd
self.data = data
class Btree():
def __init__(self,base=0):
self.base = base
#前序遍历 根左右
def qout(self,jd):
if jd == 0:
return
print jd.data
self.qout(jd.leftjd)
self.qout(jd.rightjd)
#中序遍历 左根右
def mout(self,jd):
if jd == 0:
return
self.mout(jd.leftjd)
print jd.data
self.mout(jd.rightjd)
#后序遍历 左右根
def hout(self,jd):
if jd == 0:
return
self.hout(jd.leftjd)
self.hout(jd.rightjd)
print jd.data
jd1 = Tree(data=8)
jd2 = Tree(data=9)
base = Tree(jd1,jd2,7)
x = Btree(base)
x.qout(x.base)
print '\r\n'
x.mout(x.base)
print '\r\n'
x.hout(x.base)
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
相关推荐
-
python 算法 排序实现快速排序
QUICKSORT(A, p, r)是快速排序的子程序,调用划分程序对数组进行划分,然后递归地调用QUICKSORT(A, p, r),以完成快速排序的过程.快速排序的最差时间复杂度为O(n2),平时时间复杂度为O(nlgn).最差时间复杂度的情况为数组基本有序的时候,平均时间复杂度为数组的数值分布较为平均的时候.在平时情况下快速排序跟堆排序的时间复杂度都为O(nlgn),但是快速排序的常数项较小,所以要优于堆排序. PARTITION(A, p, r) 复制代码 代码如下: x ← A[r]
-
Python3遍历目录树实现方法
本文实例讲述了Python3遍历目录树的方法.分享给大家供大家参考.具体实现方法如下: import os, fnmatch # 检查一个目录,后者某个包含子目录的目录树,并根据某种模式迭代所有文件 # patterns如:*.html,若大小写敏感可写*.[Hh][Tt][Mm][Ll] # single_level 为True表示只检查第一层 # yield_folders 表示是否显示子目录,为False只遍历子目录中的文件, # 但不返回字母名 def all_files(root, p
-
Python解析树及树的遍历
解析树 完成树的实现之后,现在我们来看一个例子,告诉你怎么样利用树去解决一些实际问题.在这个章节,我们来研究解析树.解析树常常用于真实世界的结构表示,例如句子或数学表达式. 图 1:一个简单句的解析树 图 1 显示了一个简单句的层级结构.将一个句子表示为一个树,能使我们通过利用子树来处理句子中的每个独立的结构. 图 2: ((7+3)*(5−2)) 的解析树 如图 2 所示,我们能将一个类似于 ((7+3)*(5−2)) 的数学表达式表示出一个解析树.我们已经研究过全括号表达式,那么我们怎样理解
-
Python编程实现二叉树及七种遍历方法详解
本文实例讲述了Python实现二叉树及遍历方法.分享给大家供大家参考,具体如下: 介绍: 树是数据结构中非常重要的一种,主要的用途是用来提高查找效率,对于要重复查找的情况效果更佳,如二叉排序树.FP-树.另外可以用来提高编码效率,如哈弗曼树. 代码: 用Python实现树的构造和几种遍历算法,虽然不难,不过还是把代码作了一下整理总结.实现功能: ① 树的构造 ② 递归实现先序遍历.中序遍历.后序遍历 ③ 堆栈实现先序遍历.中序遍历.后序遍历 ④ 队列实现层次遍历 #coding=utf-8 cl
-
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实现的各种排序算法代码
复制代码 代码如下: # -*- coding: utf-8 -*-# 测试各种排序算法# link:www.jb51.net# date:2013/2/2 #选择排序def select_sort(sort_array): for i, elem in enumerate(sort_array): for j, elem in enumerate(sort_array[i:]): if sort_array[i] > sort_array[j + i]
-
Python实现的几个常用排序算法实例
前段时间为准备百度面试恶补的东西,虽然最后还是被刷了,还是把那几天的"战利品"放点上来,算法一直是自己比较薄弱的地方,以后还要更加努力啊. 下面用Python实现了几个常用的排序,如快速排序,选择排序,以及二路并归排序等等. 复制代码 代码如下: #encoding=utf-8import randomfrom copy import copy def directInsertSort(seq): """ 直接插入排序 """
-
八大排序算法的Python实现
Python实现八大排序算法,具体内容如下 1.插入排序 描述 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的.个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2).是稳定的排序方法.插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素).在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中. 代码实现 def inser
-
python二叉树遍历的实现方法
复制代码 代码如下: #!/usr/bin/python# -*- coding: utf-8 -*- class TreeNode(object): def __init__(self,data=0,left=0,right=0): self.data = data self.left = left self.right = right class BTree(object): def __init__(self,root=0):
-
python数据结构之二叉树的遍历实例
遍历方案 从二叉树的递归定义可知,一棵非空的二叉树由根结点及左.右子树这三个基本部分组成.因此,在任一给定结点上,可以按某种次序执行三个操作: 1).访问结点本身(N) 2).遍历该结点的左子树(L) 3).遍历该结点的右子树(R) 有次序: NLR.LNR.LRN 遍历的命名 根据访问结点操作发生位置命名:NLR:前序遍历(PreorderTraversal亦称(先序遍历)) --访问结点的操作发生在遍历其左右子树之前.LNR:中序遍历(InorderTraversal)
-
Python利用前序和中序遍历结果重建二叉树的方法
本文实例讲述了Python利用前序和中序遍历结果重建二叉树的方法.分享给大家供大家参考,具体如下: 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 这道题比较容易,前序遍历的结果中,第一个结点一定是根结点,然后在中序遍历的结果中查找这个根结点,根结点左边的就是左子树,根结点右边的就是右子树,递归构造出左.右子树即可.示意图如图所示: 利用前序和中序遍历的结果重建二叉树 Python代码: # coding: utf-8 ''
随机推荐
- springboot与mybatis整合实例详解(完美融合)
- VBS 下载方法(CDO.MESSAGE)
- JavaScript基础语法之js表达式
- cscript adsutil.vbs 设置iis参数提示拒绝访问的解决方法
- 正则(JS)re=new RegExp("^\\d*$");与re=/^\d*$/;之间区别?
- PHP实现自动识别Restful API的返回内容类型
- PHP stream_context_create()函数的使用示例
- C#实现可捕获几乎所有键盘鼠标事件的钩子类完整实例
- PHP的Yii框架中过滤器相关的使用总结
- javascript代码调试之console.log 用法图文详解
- ruby元编程之创建自己的动态方法
- Java连接mysql数据库并进行内容查询的方法
- Jquery显示、隐藏元素以及添加删除样式
- jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
- Spring MVC 基于URL的映射规则(注解版)
- 利用keytools为tomcat 7配置ssl双向认证的方法
- Android Socket通信详解
- php定义一个参数带有默认值的函数实例分析
- Android中使用AsyncTask做下载进度条实例代码
- Python操作Oracle数据库的简单方法和封装类实例
