一、二叉树

from collections import dequeclass BiTreeNode:def __init__(self, data):self.data = dataself.lchild = Noneself.rchild = Nonea = BiTreeNode('A')
b = BiTreeNode('B')
c = BiTreeNode('C')
d = BiTreeNode('D')
e = BiTreeNode('E')
f = BiTreeNode('F')
g = BiTreeNode('G')e.lchild = a
e.rchild = g
a.rchild = c
c.lchild = b
c.rchild = d
g.rchild = froot = edef pre_order(root):if root:print(root.data, end='')pre_order(root.lchild)pre_order(root.rchild)def in_order(root):if root:in_order(root.lchild)print(root.data, end='')in_order(root.rchild)def post_order(root):if root:post_order(root.lchild)post_order(root.rchild)print(root.data, end='')def level_order(root):queue = deque()queue.append(root)while len(queue) > 0:node = queue.popleft()print(node.data,end='')if node.lchild:queue.append(node.lchild)if node.rchild:queue.append(node.rchild)pre_order(root)
print("")
in_order(root)
print("")
post_order(root)
print("")
level_order(root)

前序,中序,后序,层次遍历

        

        

class BiTreeNode:def __init__(self, data):self.data = dataself.lchild = Noneself.rchild = Noneclass BST:def __init__(self, li=None):self.root = Noneif li:self.root = self.insert(self.root, li[0])for val in li[1:]:self.insert(self.root, val)def insert(self, root, val):if root is None:root = BiTreeNode(val)elif val < root.data:root.lchild = self.insert(root.lchild, val)else:root.rchild = self.insert(root.rchild, val)return rootdef insert_no_rec(self, val):p = self.rootif not p:self.root = BiTreeNode(val)returnwhile True:if val < p.data:if p.lchild:p = p.lchildelse:p.lchild = BiTreeNode(val)breakelse:if p.rchild:p = p.rchildelse:p.rchild = BiTreeNode(val)breakdef query(self, root, val):if not root:return Falseif root.data == val:return Trueelif root.data > val:return self.query(root.lchild, val)else:return self.query(root.rchild, val)def query_no_rec(self, val):p = self.rootwhile p:if p.data == val:return Trueelif p.data > val:p = p.lchildelse:p = p.rchildreturn Falsedef in_order(self, root):if root:self.in_order(root.lchild)print(root.data, end=',')self.in_order(root.rchild)tree = BST()
for i in [1,5,9,8,7,6,4,3,2]:tree.insert_no_rec(i)
tree.in_order(tree.root)
#print(tree.query_no_rec(12))

View Code

转载于:https://www.cnblogs.com/mengqingjian/p/8407016.html

Python算法——二叉树相关推荐

  1. 补充:python实现二叉树里面求叶子节点的算法

    python实现二叉树里面求叶子节点的算法 叶子节点概念: 一棵树当中没有子结点(即度为0)的结点称为叶子结点,简称"叶子". 叶子是指度为0的结点,又称为终端结点. 图形: 这个 ...

  2. Python算法实战视频课程--二叉树-刘硕-专题视频课程

    Python算法实战视频课程--二叉树-9146人已学习 课程介绍         二叉树是重要的抽象数据类型,解决很多问题时都需要它.通过本课我们学习这种重要的数据结构,本课注重实践,没有过多枯燥的 ...

  3. 【Python算法系列十一】二叉树的3种遍历方式

    二叉树的遍历是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次. 遍历二叉树的方法主要分 3 种:先序遍历.中序遍历和后序遍历: 先序遍历指最先遍历节点本身, ...

  4. python代码大全下载-最全Python算法实现资源汇总!

    原标题:最全Python算法实现资源汇总! 整理 | Rachel 责编 | Jane 出品 | Python大本营(ID:pythonnews) [导语]数据结构与算法是所有人都要学习的基础课程,自 ...

  5. python算法书籍-有哪些用 Python 语言讲算法和数据结构的书?

    1.Python数据结构篇 数据结构篇主要是阅读[Problem Solving with Python](Welcome to Problem Solving with Algorithms and ...

  6. GitHub标星2.6万!Python算法新手入门大全

    今天推荐一个Python学习的干货. 几个印度小哥,在GitHub上建了一个各种Python算法的新手入门大全,现在标星已经超过2.6万.这个项目主要包括两部分内容:一是各种算法的基本原理讲解,二是各 ...

  7. 八十一、Python | Leetcode 二叉树系列(下篇)

    @Author:Runsen @Date:2020/7/6 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  8. python算法和数据结构_Python中的数据结构和算法

    python算法和数据结构 To 至 Leonardo da Vinci 达芬奇(Leonardo da Vinci) 介绍 (Introduction) The purpose of this ar ...

  9. python算法入门_GitHub标星2.6万!Python算法新手入门大全

    问耕 发自 凹非寺 量子位 出品 | 公众号 QbitAI 今天推荐一个Python学习的干货. 几个印度小哥,在GitHub上建了一个各种Python算法的新手入门大全,现在标星已经超过2.6万.这 ...

最新文章

  1. 聚类效果评估、内部指标(Jaccard系数、FM指数、Rand指数)、外部指标(DB指数、Dunn指数)、轮廓系数(Silhouette Coefficient)
  2. Java黑皮书课后题第5章:*5.9(找出得最高分的前两个学生)编写程序,提示用户输入学生的个数、每个学生名字及分数,最后显示获得最高分的学生
  3. 在linux下创建自定义service服务
  4. JavaScript | 如何为变量分配十进制,八进制和十六进制值?
  5. 6常见的HTML和CSS面试问答
  6. javascript 常用的数组操作
  7. jmap 文件解析_jvm系列:dump文件深度分析
  8. 实现网页页面跳转的几种方法(meta标签、js实现、php实现)
  9. [我的常识]动物庄园里说鼻环,到底为啥要穿鼻环呢
  10. JSP实用教程(3)——JSP内置对象
  11. 小程序组件库ColorUI教程
  12. 究竟什么是软件资产管理(SAM)?企业应该怎么做?
  13. 投资热议:为什么另类数据对数字转型至关重要?
  14. win10安装AutoCAD2006步骤
  15. 在Unity中利用Mono.Cecil将代码注入到Dll中
  16. 生成SGML格式,用于算BLEU,NIST,TER
  17. alios下载_AliOS Studio(阿里编程工具)
  18. 省市区三级联动(带经纬度、离线地图)
  19. CAD制图神器-CAD专用键盘
  20. JPG图片插入到CAD图纸中的2种方法

热门文章

  1. 未能加载文件或程序集“Poderosa.Core
  2. 简单实现KeyChain实例
  3. Eclipse3.6.2 64位启动报“Failed to load the JNI shared library”错的解决方法
  4. vue --- 2.0响应式补充
  5. node --- 使用koa-router,让后端模块化
  6. 数学之路(3)-机器学习(3)-机器学习算法-SVM[7]
  7. 紫书 例题8-10 UVa 714 (二分答案)
  8. while read line 用法详细介绍
  9. Difference: throw or throw ex?
  10. CSS:页脚紧贴底部