二叉树:深度优先遍历与广度优先遍历(及其Python实现)

本文详细介绍了二叉树的深度优先遍历(先序、中序、后序)和广度优先遍历的概念,并提供了Python实现。通过实例解释了遍历顺序,并附带了代码测试。
摘要由CSDN通过智能技术生成

二叉树:深度优先遍历与广度优先遍历(及其Python实现)

本问记录二叉树的深度优先遍历算法和广度优先遍历算法的特点及其python实现。

1 深度优先遍历

深度优先遍历算法包括先序遍历、中序遍历和后续遍历。

1.1 深度优先遍历顺序

我们根据下图只有3个节点的二叉树说明深度优先遍历顺序。
(各节点分别标上序号)
3_node

  1. 先序遍历:0→1→2
  2. 中序遍历:1→0→2
  3. 后序遍历:1→2→0

注意主要差别在于节点0在排序中的位置,节点1和节点2的相对位置是不变的(1在前,2在后)。

一般情况下的二叉树,如下图所示:
(各节点分别标上序号)
在这里插入图片描述
以先序遍历为例:
我们首先从最上面开始看,将0节点的左子树包含的节点当作一个整体(1、3、4、7、8、9),记为整体1;右子树包含的节点也当作一个整体(2、4、6),记为整体2;所以此时,先序遍历顺序为:

  • 0 → 整体1 → 整体2

但是整体1中还包含若干节点,所以继续分析整体1中的节点。
同理,从上往下分析,节点1左子树为一个整体(3、7、8),记为整体3;右子树为一个整体(4、9),记为整体4;所以此实,整体1中的先序遍历顺序为:

  • 1 → 整体3 → 整体4

同理,整体3包含若干节点,需要继续分析整体3(3、7、8)。
此时我们发现节点3左子树只有一个节点7,右子树只有一个节点8,所以整体3的先序遍历顺序为:

  • 3 → 7 → 8

于是,按照这个方法,我们能够推出整个二叉树的先序遍历顺序:

  • 0 → 1 → 3 → 7 → 8 → 4 → 9 → 2 → 5 → 6

同理,我们能推导出另外两种深度优先遍历的遍历顺序:

  1. 先序遍历:0 → 1 → 3 → 7 → 8 → 4 → 9 → 2 → 5 → 6
  2. 中序遍历:7 → 3 → 8 → 1 → 9 → 4 → 0 → 5 → 2 → 6
  3. 后序遍历:7 → 8 → 3 → 9 → 4 → 1 → 5 → 6 → 2 → 0
1.2 深度优先遍历Python实现

根据上述的遍历过程描述,我们可以看出这实际上是一个递归的过程,因此使用递归可以很简单地实现3种深度优先遍历。

首先定义节点和树的类并定义添加节点的方法,之后在二叉树类中定义先序遍历、中序遍历和后序遍历的方法。

# 节点类
class Node(object):
    def __init__(self, item):
        self.elem = item
        self.lchild = None
        self.rchild = None

# 二叉树类
class Tree(object):
    # 初始化方法
    def __init__
最低0.47元/天 解锁文章
python实现树的深度优先遍历广度优先遍历详解
09-18
主要介绍了python实现树的深度优先遍历广度优先遍历,详细分析了树的深度优先遍历广度优先遍历原理及Python相关实现技巧,需要的朋友可以参考下
宽度优先搜索python_python 递归深度优先搜索与广度优先搜索算法模拟实现
weixin_39747615的博客
11-27 274
一、递归原理小案例分析(1)# 概述递归:即一个函数调用了自身,即实现了递归 凡是循环能做到的事,递归一般都能做到!(2)# 递归的过程1、出临界条件2、找出这一次和上一次关系3、假设当前函数已经能用,调用自身计算上一次的结果,再求出本次的结果(3)案例分析:求1+2+3+...+n的数和# 概述'''递归:即一个函数调用了自身,即实现了递归凡是循环能做到的事,递归一般都能做到!'''# 递...
Python算法L3:深度优先搜索(DFS)
最新发布
theoxiong的博客
08-28 1081
深度优先搜索是一种强大且灵活的图遍历算法,它的递归和迭代实现方法都有广泛的应用场景。通过理解DFS的基本原理和实现,您可以在许多图算法问题中找到合适的解决方案。无论是在图的连通性检测、拓扑排序,还是路径查找中,DFS都能提供有效的支持。希望这篇文章对你理解和应用DFS有所帮助。如果你有任何问题或进一步的讨论,欢迎在评论区留言。关注我,更多精彩内容敬请期待《Python算法》系列博客的下一课–Python广度优先搜索!
Acwing 846-树的重心
她与伞皆过客的博客
04-27 390
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int n; vector<int> G[N]; bool vis[N]; int ans=N; //以u为根的子树中点的数量 int dfs(int u) { vis[u]=true; int sum=1,res=0; for(auto i : G[u]) { if(!vis[i]) .
python基础编程:python实现树的深度优先遍历广度优先遍历详解
python基础编程开发教程
03-19 1172
本文实例讲述了python实现树的深度优先遍历广度优先遍历。分享给大家供大家参考,具体如下: 广度优先(层次遍历) 从树的root开始,从上到下从左到右遍历整个树的节点 数和二叉树的区别就是,二叉树只有左右两个节点 广度优先 顺序:A - B - C - D - E - F - G - H - I 代码实现 def breadth_travel(self, root): """利用队列...
Python数据结构算法篇(十五)-- 二叉树的遍历:深度优先搜索与广度优先搜索
CarpeDiem
05-24 3652
本篇带你走进二叉树,使用深度优先搜索和广度优先搜索思想进行二叉树的顺序遍历和层序遍历,带你刷遍LeetCode上的二叉树遍历题目。
Python实现二叉树深度优先遍历广度优先遍历
HeiJack的博客
06-30 964
二叉树的遍历分为深度优先遍历广度优先遍历深度优先遍历顾名思义是从树的一条分支走到底才进行回溯,深度优先遍历又分为前序遍历,中序遍历和后序遍历。 一棵二叉树由根结点、左子树和右子树三部分组成,若规定 D、L、R 分别代表遍历根结点、遍历左子树、遍历右子树。 DLR--前序遍历(根在前,从左往右,一棵树的根永远在左子树前面,左子树又永远在右子树前面) LDR--中序遍历(根在中,从左往右,一棵树的左子树永远在根前面,根永远在右子树前面) ...
python基础教程:python实现树的深度优先遍历广度优先遍历详解
12-21
在本文中,我们将深入探讨树的两种主要遍历方法:深度优先遍历(DFS)和广度优先遍历(BFS)。 首先,让我们定义什么是树。树是一种非线性的数据结构,由节点(或称为顶点)和边组成。每个节点可以有零个或多个子...
python 深度优先与广度优先
Clearinn的博客
11-05 431
深度优先搜索算法(英语:Depth-First-Search,简称DFS)是一种用于遍历或搜索树或图的算法。 沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过或者在搜寻时结点不满足条件,搜索将回溯到发现节点v的那条边的起始节点。整个进程反复进行直到所有节点都被访问为止。 import requests from lxml import etree headers = ...
python算法-二叉树广度优先遍历
weixin_30361641的博客
03-17 96
广度优先遍历:优先遍历兄弟节点,再遍历子节点 算法:通过队列实现--》先进先出 广度优先遍历的结果: 50,20,60,15,30,70,12 程序遍历这个二叉树: # encoding=utf-8from Queue import Queue class TreeNode(object): def __init__(self,val,left=None,right=None)...
python深度遍历和广度遍历_python学习笔记之--广度遍历和深度遍历
weixin_39783149的博客
12-20 352
一般我们遍历文件夹有两种方式:深度遍历和广度遍历。假设我们有这种一组文件夹:A BC D E FC1 C2 D1 D2 E1 E2 ...
Python 算法基础篇:深度优先搜索( DFS )和广度优先搜索( BFS )
小蓝枣的博客
07-19 8066
深度优先搜索( DFS )和广度优先搜索( BFS )是两种常用的图遍历算法,用于在图中搜索目标节点或遍历图的所有节点。本篇博客将介绍 DFS 和 BFS 算法的基本概念,并通过实例代码演示它们的应用。
二叉树深度优先遍历python
eric3012的博客
08-30 485
二叉树应用场景很多,比如:数据检索,数据管理 二叉树的遍历,分为深度优先遍历,以及广度优先遍历。在深度优先遍历中,具体分为如下三种: 先序遍历:先访问根节点,再遍历左子树,再遍历右子树; 中序遍历:先遍历左子树,再访问根节点,再遍历右子树; 后序遍历:先遍历左子树,再遍历右子树,再访问根节点 对于上图的二叉树,其先序遍历结果是:50,20,15,30,60,70;其中序遍历结果是:15,20,30,50,60,70;其后序遍历结果是:15,30,20,70,60,50 # encoding=utf-8
树之深度优先遍历
曹同学的博客
03-29 222
直接贴代码 只需要修改中间打印的位置,放在最前面就是先序遍历,放在中间,就是中序遍历,放在后面就是后序遍历; 贴代码 public class Main { public static void main(String[] args) { System.out.println("Hello World!"); Node head=new Node(1,n...
树的深度优先遍历
weixin_55438199的博客
07-14 1857
树与树的深度遍历方法
使用python实现二叉树深度优先遍历
qq3342560494的博客
09-23 473
本文将使用两种方式 -- 递归方法(易)与色彩标记(较难) 带大家实现二叉树深度优先遍历,原理较为复杂但实现简单。数据结构小白也可以轻松上手实现,接下来请看正文。,本文内容包含二叉树深度优先遍历的基础知识,二叉树的构建,实现深度优先遍历二叉树的两种方法
写文章

热门文章

  • 线程池大小选择:针对 I/O 密集型场景和 CPU 密集型场景 3397
  • 为什么 C++ 比 Python 快?从编译器和解释器的角度分析差异 2834
  • 二叉树:深度优先遍历与广度优先遍历(及其Python实现) 2549
  • Ubuntu系统 TeamViewer一直显示“未就绪,请检查你的连接” 1733
  • 新安装的ubuntu16.04不能连接wifi的解决办法 1305

分类专栏

  • C++ 2篇
  • 后端 5篇
  • 数据结构与算法 2篇
  • 笔记 4篇
  • 深度学习 1篇

最新评论

  • 线程池大小选择:针对 I/O 密集型场景和 CPU 密集型场景

    力不竭!!!战不止!!!: 支持博主的创作,要是对服务器是CPU密集型和IO密集型有疑惑,可以看看这篇文章:http://t.csdn.cn/KJNLr

  • Docker 与 Kubernetes 的基本原理与联系

    CSDN-Ada助手: 推荐 云原生入门 技能树:https://edu.csdn.net/skill/cloud_native?utm_source=AI_act_cloud_native

  • 二叉树:深度优先遍历与广度优先遍历(及其Python实现)

    钊YChen: 谢谢大佬!

  • 二叉树:深度优先遍历与广度优先遍历(及其Python实现)

    不正经的kimol君: 冲冲冲!!!

最新文章

  • C++ RAII 设计机制
  • Pytorch Dataloader 模块源码分析(二):Sampler / Fetcher 组件及 Dataloader 核心代码
  • Pytorch Dataloader 模块源码分析(一):整体框架与 Dataset 组件
2022年6篇
2021年3篇
2020年2篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家淮北抽象玻璃钢雕塑订做价格玻璃钢小型雕塑小熊猫玻璃钢卡通雕塑厂家佛山发光动物玻璃钢雕塑生产商茂名广场玻璃钢动物雕塑邵阳公园玻璃钢雕塑安装成品玻璃钢雕塑摆件厂家直销玻璃钢动物雕塑维护泡沫玻璃钢雕塑设计制作浙江玻璃钢卡通雕塑动漫雕刻崇阳玻璃钢花盆花器菏泽室内玻璃钢彩绘雕塑厂家广东商场创意商业美陈制作兴化玻璃钢雕塑厂家电话多少玻璃钢李时珍人像雕塑批发暴力熊玻璃钢雕塑图定西玻璃钢植物雕塑订做北京超市商场美陈哪里买杭州步行街玻璃钢雕塑高邮玻璃钢园门头雕塑商场玻璃钢花盆研究浙江省玻璃钢广场雕塑莆田玻璃钢卡通雕塑价格范围宁夏玻璃钢广场雕塑定制贵州玻璃钢广场雕塑徐州玻璃钢雕塑咨询商场主题美陈从前期设计到落地商场开业美陈效果图山东装饰商场美陈价钱广州玻璃钢雕塑心形花盆香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化