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实现树的构造和几 ...
随机推荐
- pycharm 默认添加# -*-coding: utf-8 -*-
备忘 pycharm创建py文件时,默认输入表头信息 1.点击[File]-[Settins] 2.点击[Editor]-[File and Code Templates] 3.点击[Python S ...
- opencv对图片画框写文字
业务背景:对图片进行画框后调用排序方法按照"从上到下,从左到右"对已经画的框进行排序.排序方法当前有缺陷,修复后需要验证. 目前有如下信息: 原始图片地址 图片对应的每个框的坐标( ...
- 【mysql练习】转置,总计,分组
1,有如下一个表,要求把这个表按照2016,2017,2018,2019,把从1月到12月的金额展示出来. profit表: year month amount2019 1 52019 3 62018 ...
- Software--Programming--Java__Maven
Maven 是一个构建工具,可用于编译.测试和部署 Java 项目 采用了 管理优先配置原则. Maven 构建的项目的默认目录结构 1 <?xml version="1. ...
- docker-compose之memcached
新建docker-compose.yml,写入以下内容 memcached: image: memcached:latest ports: - 11211:11211 启动服务 docker-comp ...
- 教你三分钟开发开发java短信验证码
现如今,绝大多数网站和app都需要支持手机号注册.手机登录,这就需要开发者实现短信验证码的功能,对于很多小白同学来说,没接触过,没有思路,下面小编就给大家详解一下. 发送短信的功能需要借助第三方的短信 ...
- linux虚拟机,ifconfig无法获取静态ip地址
之前一直显示这种ip地址,如下图(网图),查看了DHCP,是正常启动的,虚拟网络编辑器中设置的也正确.后来发现更改虚拟机的设置后就可以了,如下: 设置方法:VMware-虚拟机-设置-网络适配器,选择 ...
- bzoj 2115
线性基好题 首先,如果一条路径被经过了两次,那么这条路径上的权值等于没有(废话) 基于这一点,我们其实已经找到了解决问题的方法了! 首先,由于可以反复经过一条边,因此我们可以把一条合法的路径看成这样的 ...
- git log 查看分支图
操作: 在git config文件里面设置别名. git config --global alias.lg "log --graph --all --pretty=format:'%Cred ...
- mermaid工具
mermaid支持:流程图.时序图.甘特-等图表的绘制:可在线编辑,保存代码.图片. mermaid :官网.在线编辑器.操作手册