python-实现二叉树
# encoding=utf-8 class Node(object):
def __init__(self, item):
self.item = item
self.lchild = None
self.rchild = None class BinaryTree(object):
def __init__(self, node=None):
self.root = node def add(self, item):
"""添加节点"""
if self.root is None:
self.root = Node(item)
else:
# 使用队列来处理使用广度优先查找要添加元素的位置
queue = []
queue.append(self.root)
while len(queue) > 0:
node = queue.pop(0)
if node.lchild is not None:
queue.append(node.lchild)
else:
node.lchild = Node(item)
return
if node.rchild is not None:
queue.append(node.rchild)
else:
node.rchild = Node(item)
return def breadth_travel(self):
"""广度优先遍历二叉树"""
if self.root is None:
return
else:
queue = []
queue.append(self.root)
while len(queue) > 0:
node = queue.pop(0)
print(node.item, end=" ")
if node.lchild:
queue.append(node.lchild)
if node.rchild:
queue.append(node.rchild) # ============================================
# 深度优先3种遍历二叉树方式 def preorder_travel(self, node):
"""先序遍历 即 根 左 右"""
if node:
print(node.item, end=" ")
self.preorder_travel(node.lchild)
self.preorder_travel(node.rchild)
else:
return def inorder_travel(self, node):
"""中序遍历 即 左 根 右"""
if node:
self.inorder_travel(node.lchild)
print(node.item, end=' ')
self.inorder_travel(node.rchild)
else:
return def postorder_travel(self, node):
"""后序遍历 即 左 右 根"""
if node:
self.postorder_travel(node.lchild)
self.postorder_travel(node.rchild)
print(node.item, end=' ')
else:
return if __name__ == '__main__':
t = BinaryTree()
t.add(0)
t.add(1)
t.add(2)
t.add(3)
t.add(4)
t.add(5)
t.add(6)
t.add(7)
t.add(8)
t.add(9)
t.breadth_travel()
print("")
t.preorder_travel(t.root)
print("")
t.inorder_travel(t.root)
print("")
t.postorder_travel(t.root)
print("")
python-实现二叉树的更多相关文章
- 【DataStructure In Python】Python模拟二叉树
使用Python模拟二叉树的基本操作,感觉写起来很别扭.最近做编译的优化,觉得拓扑排序这种东西比较强多.近期刷ACM,发现STL不会用实在太伤了.决定花点儿时间学习一下STL.Boost其实也很强大. ...
- Python实现二叉树的四种遍历
对于一个没学过数据结构这门课程的编程菜鸟来说,自己能理解数据结构中的相关概念,但是自己动手通过Python,C++来实现它们却总感觉有些吃力.递归,指针,类这些知识点感觉自己应用的不够灵活,这是自己以 ...
- Python实现二叉树的左中右序遍历
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/3/18 12:31 # @Author : baoshan # @Site ...
- python实现二叉树
初学python,需要实现一个决策树,首先实践一下利用python实现一个二叉树数据结构.建树的时候做了处理,保证建立的二叉树是平衡二叉树. # -*- coding: utf-8 -*- from ...
- Python实现二叉树及其4种遍历
Python & BinaryTree 1. BinaryTree (二叉树) 二叉树是有限个元素的集合,该集合或者为空.或者有一个称为根节点(root)的元素及两个互不相交的.分别被称为左子 ...
- Python实现二叉树的前序、中序、后序、层次遍历
有关树的理论部分描述:<数据结构与算法>-4-树与二叉树: 下面代码均基于python实现,包含: 二叉树的前序.中序.后序遍历的递归算法和非递归算法: 层次遍历: 由前序序列.中 ...
- python实现二叉树遍历算法
说起二叉树的遍历,大学里讲的是递归算法,大多数人首先想到也是递归算法.但作为一个有理想有追求的程序员.也应该学学非递归算法实现二叉树遍历.二叉树的非递归算法需要用到辅助栈,算法着实巧妙,令人脑洞大开. ...
- Python数据结构——二叉树的实现
1. 二叉树 二叉树(binary tree)中的每个节点都不能有多于两个的儿子. 1.1 二叉树列表实现 如上图的二叉树可用列表表示: tree=['A', #root ['B', #左子树 ['D ...
- Python实现二叉树的前序遍历、中序遍历
计算根节点到叶子节点的所组成的数字(1247, 125, 1367)以及叶子节点到根节点组成的数字(7421, 521, 8631),其二叉树树型结构如下 计算从根节点到叶子节点组成的数字,本质上来说 ...
- python实现二叉树和它的七种遍历
介绍: 树是数据结构中很重要的一种,基本的用途是用来提高查找效率,对于要反复查找的情况效果更佳,如二叉排序树.FP-树. 另外能够用来提高编码效率,如哈弗曼树. 代码: 用python实现树的构造和几 ...
随机推荐
- unity tex2Dlod in vert
https://forum.unity.com/threads/how-to-sample-a-texture-in-vertex-shader.513816/ GreatWall said: ↑ ...
- h5:vue3 + ts + vite + vuex + axios + vant4 + scss + postcss+mockjs+element-plus
模板地址:https://gitee.com/zhang_meng_lei/mobile-template-h5-vue3/tree/master 1.安装element-plus:yarn add ...
- 通过nft持有大户地址获取正常交易和内部交易
/*内部交易*/------------ CREATE TABLE `internal_txlist` ( `blockNumber` varchar(255) DEFAULT NULL, `tx_t ...
- PPT模板网址
PPT免费下载网址: https://www.1ppt.com/ PPT模板下载:www.1ppt.com/moban/ 行业PPT模板:www.1ppt.com/han ...
- Hbase 报错hbase Could not start zk requested port of 2181
windows下面 解决: 1. conf/hbase-env.cmd set HBASE_MANAGES_ZK=false 2. 先启动Hbase start-Hbase.cmd 再启动 zoo ...
- Token过期处理
Token用于进行接口鉴权,但是Token具有由后端设置的过期时间,当Token过期以后,就无法再请求数据了 项目中后端设置的过期时间为24h,测试时我们可以手动修改token值让Token失效 处理 ...
- Android 将函数放到主线程运行
有时候,app会检测加密函数是否在主线程运行,为了逃避这种检测,要将函数放到主线程运行 Class<?> aClass = RposedHelpers.findClass("co ...
- Kubernetes--管理Pod对象的容器(2)
自定义运行的容器化应用 由Docker镜像启动容器时运行的应用程序在相应的Dockerfile中由ENTRYPOINT指令进行定义,传递给程序的参数则通过CMD指令指定,ENTRYPOINT指令不存在 ...
- 由浇花工具开始IOT物联网平台之开始前言篇【1】
在2020年时,突然有个想法,就是做个浇花工具,因为平时喜欢养花,有时忘记浇花,有时感觉手动浇花太麻烦,所以做个这个小玩意,是用.NET 开发的WinForm小程序,来控制单片机,带动水泵浇花,还可以 ...
- 1 Could not resolve XML resource [null] with public ID [null]
启动Tomcat报错: Java.io.FileNotFoundException: Could not resolve XML resource [null] with public ID [nul ...