这篇文章主要介绍了python实现的二叉树定义与遍历算法,结合具体实例形式分析了基于Python定义的二叉树及其常用遍历操作实现技巧,需要的朋友可以参考下

本文实例讲述了python实现的二叉树定义与遍历算法。分享给大家供大家参考,具体如下:

初学python,需要实现一个决策树,首先实践一下利用python实现一个二叉树数据结构。建树的时候做了处理,保证建立的二叉树是平衡二叉树。

# -*- coding: utf-8 -*-

from collections import deque

class Node:

def init(self,val,left=None,right=None):

self.val=val

self.left=left

self.right=right

#setter and getter

def get_val(self):

return self.val

def set_val(self,val):

self.val=val

def get_left(self):

return self.left

def set_left(self,left):

self.left=left

def get_right(self):

return self.right

def set_right(self,right):

self.right=right

class Tree:

def init(self,list):

list=sorted(list)

self.root=self.build_tree(list)

#递归建立平衡二叉树

def build_tree(self,list):

l=0

r=len(list)-1

if(l>r):

return None

if(l==r):

return Node(list[l])

mid=(l+r)/2

root=Node(list[mid])

root.left=self.build_tree(list[:mid])

root.right=self.build_tree(list[mid+1:])

return root

#前序遍历

def preorder(self,root):

if(root is None):

return

print root.val

self.preorder(root.left)

self.preorder(root.right)

#后序遍历

def postorder(self,root):

if(root is None):

return

self.postorder(root.left)

self.postorder(root.right)

print root.val

#中序遍历

def inorder(self,root):

if(root is None):

return

self.inorder(root.left)

print root.val

self.inorder(root.right)

#层序遍历

def levelorder(self,root):

if root is None:

return

queue =deque([root])

while(len(queue)>0):

size=len(queue)

for i in range(size):

node =queue.popleft()

print node.val

if node.left is not None:

queue.append(node.left)

if node.right is not None:

queue.append(node.right)

list=[1,-1,3,4,5]

tree=Tree(list)

print '中序遍历:'

tree.inorder(tree.root)

print '层序遍历:'

tree.levelorder(tree.root)

print '前序遍历:'

tree.preorder(tree.root)

print '后序遍历:'

tree.postorder(tree.root)

输出:

中序遍历

-1

1

3

4

5

层序遍历

3

-1

4

1

5

前序遍历

3

-1

1

4

5

后序遍历

1

-1

5

4

3

建立的二叉树如下图所示:

python二叉树遍历算法_分享python实现的二叉树定义与遍历相关推荐

  1. python编程小知识_分享Python开发中要注意的十个小贴士

    大家请注意:这篇文中假设我们都用的是Python 3 1. 列表推导式 你有一个list:bag = [1, 2, 3, 4, 5] 现在你想让所有元素翻倍,让它看起来是这个样子:[2, 4, 6, ...

  2. python电影推荐算法_基于Python的电影推荐算法

    原标题:基于Python的电影推荐算法 第一步:收集和清洗数据 数据链接:https://grouplens.org/datasets/movielens/ 下载文件:ml-latest-small ...

  3. python颜色识别算法_纯Python编写K-means算法,提取图片中的主体颜色

    在文章 今天我用Python手写了一个K-means算法,来完成同样的功能. 聚类是数据挖掘中一种非常重要的学习流派,指将未标注的样本数据中相似的分为同一类,正所谓"物以类聚,人以群分&qu ...

  4. python 排列组合算法_基于python快速实现排列组合算法

    1.python语言简单.方便,其内部可以快速实现排列组合算法,下面做简单介绍. 2.一个列表数据任意组合 2.1主要是利用自带的库#_*_ coding:utf-8 _*_ #__author__= ...

  5. python指数运算函数_分享Python中用于计算指数的exp()方法实例教程

    exp()方法返回指数x: ex. 语法 以下是exp()方法的语法:import math math.exp( x ) 注意:此函数是无法直接访问的,所以我们需要导入math模块,然后需要用math ...

  6. python实现蒙特卡洛算法_用Python实现基于蒙特卡洛算法小实验

    用Python实现基于蒙特卡洛算法小实验 蒙特卡洛算法思想 蒙特卡洛(Monte Carlo)法是一类随机算法的统称,提出者是大名鼎鼎的数学家冯· 诺伊曼 ,他在20世纪40年代中期用驰名世界的赌城- ...

  7. python矩阵乘法算法_纯python进行矩阵的相乘运算的方法示例

    本文介绍了纯python进行矩阵的相乘运算的方法示例,分享给大家,具体如下: def matrixMultiply(A, B): # 获取A的行数和列数 A_row, A_col = shape(A) ...

  8. python查重算法_用Python实现通过哈希算法检测图片重复的教程

    Iconfinder 是一个图标搜索引擎,为设计师.开发者和其他创意工作者提供精美图标,目前托管超过 34 万枚图标,是全球最大的付费图标库.用户也可以在 Iconfinder 的交易板块上传出售原创 ...

  9. python文件去重算法_使用Python检测文章抄袭及去重算法原理解析

    在互联网出现之前,"抄"很不方便,一是"源"少,而是发布渠道少:而在互联网出现之后,"抄"变得很简单,铺天盖地的"源"源 ...

最新文章

  1. ESX上ORACLE 10.2RAC(4.在REHAT4.7中安装ORACLE RAC)
  2. [转]ASP.NET 缓存(十六)--检索缓存项的值
  3. java版mc植物生长条件_植物生长需要的五个条件
  4. 4. XHTML语法
  5. 什么是网络套接字(Socket)?
  6. c语言怎么让写的函数兼容int型和char型_既然C语言void指针是“万能指针”,那么malloc还需类型转换吗?...
  7. TreeCtrl 查找功能的最简单实现
  8. 是不正确的python语句_Python if语句读取不正确
  9. lua协程 unity_unity协程coroutine浅析
  10. python对象之间的关系
  11. 版本分支不宜间隔太久
  12. python 遗传算法_Python实现遗传算法的代码
  13. Java 版本6下载大全
  14. 仓央嘉措---不负如来不负卿---问佛--见与不见
  15. 做APM领域德国队,笃信技术和极简体验的听云打造历程
  16. php ios表情包,十分钟开发一款 iOS 表情包 App
  17. requests框架详解
  18. 电气工程师软件笔试题
  19. 头盔佩戴检测(行人跟踪技术检测)
  20. 进公司两个月了还没上手项目_27个“经验证且易于上手”的赚钱在线业务创意

热门文章

  1. trinosql_prestosql问题
  2. Python字节码介绍
  3. LeetCode简单题之去掉最低工资和最高工资后的工资平均值
  4. 新一代图像AI ISP技术
  5. 摄像头模组(CCM)与镀膜
  6. Harmony生命周期
  7. 自动调度GPU的卷积层
  8. NVIDIA GPUs上深度学习推荐模型的优化
  9. php 导航高亮,zblogphp导航高亮代码分享教程
  10. div css 常用技巧