Python算法——二叉树
一、二叉树
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算法——二叉树相关推荐
- 补充:python实现二叉树里面求叶子节点的算法
python实现二叉树里面求叶子节点的算法 叶子节点概念: 一棵树当中没有子结点(即度为0)的结点称为叶子结点,简称"叶子". 叶子是指度为0的结点,又称为终端结点. 图形: 这个 ...
- Python算法实战视频课程--二叉树-刘硕-专题视频课程
Python算法实战视频课程--二叉树-9146人已学习 课程介绍 二叉树是重要的抽象数据类型,解决很多问题时都需要它.通过本课我们学习这种重要的数据结构,本课注重实践,没有过多枯燥的 ...
- 【Python算法系列十一】二叉树的3种遍历方式
二叉树的遍历是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次. 遍历二叉树的方法主要分 3 种:先序遍历.中序遍历和后序遍历: 先序遍历指最先遍历节点本身, ...
- python代码大全下载-最全Python算法实现资源汇总!
原标题:最全Python算法实现资源汇总! 整理 | Rachel 责编 | Jane 出品 | Python大本营(ID:pythonnews) [导语]数据结构与算法是所有人都要学习的基础课程,自 ...
- python算法书籍-有哪些用 Python 语言讲算法和数据结构的书?
1.Python数据结构篇 数据结构篇主要是阅读[Problem Solving with Python](Welcome to Problem Solving with Algorithms and ...
- GitHub标星2.6万!Python算法新手入门大全
今天推荐一个Python学习的干货. 几个印度小哥,在GitHub上建了一个各种Python算法的新手入门大全,现在标星已经超过2.6万.这个项目主要包括两部分内容:一是各种算法的基本原理讲解,二是各 ...
- 八十一、Python | Leetcode 二叉树系列(下篇)
@Author:Runsen @Date:2020/7/6 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...
- python算法和数据结构_Python中的数据结构和算法
python算法和数据结构 To 至 Leonardo da Vinci 达芬奇(Leonardo da Vinci) 介绍 (Introduction) The purpose of this ar ...
- python算法入门_GitHub标星2.6万!Python算法新手入门大全
问耕 发自 凹非寺 量子位 出品 | 公众号 QbitAI 今天推荐一个Python学习的干货. 几个印度小哥,在GitHub上建了一个各种Python算法的新手入门大全,现在标星已经超过2.6万.这 ...
最新文章
- 聚类效果评估、内部指标(Jaccard系数、FM指数、Rand指数)、外部指标(DB指数、Dunn指数)、轮廓系数(Silhouette Coefficient)
- Java黑皮书课后题第5章:*5.9(找出得最高分的前两个学生)编写程序,提示用户输入学生的个数、每个学生名字及分数,最后显示获得最高分的学生
- 在linux下创建自定义service服务
- JavaScript | 如何为变量分配十进制,八进制和十六进制值?
- 6常见的HTML和CSS面试问答
- javascript 常用的数组操作
- jmap 文件解析_jvm系列:dump文件深度分析
- 实现网页页面跳转的几种方法(meta标签、js实现、php实现)
- [我的常识]动物庄园里说鼻环,到底为啥要穿鼻环呢
- JSP实用教程(3)——JSP内置对象
- 小程序组件库ColorUI教程
- 究竟什么是软件资产管理(SAM)?企业应该怎么做?
- 投资热议:为什么另类数据对数字转型至关重要?
- win10安装AutoCAD2006步骤
- 在Unity中利用Mono.Cecil将代码注入到Dll中
- 生成SGML格式,用于算BLEU,NIST,TER
- alios下载_AliOS Studio(阿里编程工具)
- 省市区三级联动(带经纬度、离线地图)
- CAD制图神器-CAD专用键盘
- JPG图片插入到CAD图纸中的2种方法
热门文章
- 未能加载文件或程序集“Poderosa.Core
- 简单实现KeyChain实例
- Eclipse3.6.2 64位启动报“Failed to load the JNI shared library”错的解决方法
- vue --- 2.0响应式补充
- node --- 使用koa-router,让后端模块化
- 数学之路(3)-机器学习(3)-机器学习算法-SVM[7]
- 紫书 例题8-10 UVa 714 (二分答案)
- while read line 用法详细介绍
- Difference: throw or throw ex?
- CSS:页脚紧贴底部