二叉树的三种遍历对比及用图片展现

二叉树的创建与三种遍历方式(带图文详解) 本文讲解了如何创建二叉树,及二叉树的三种遍历方式。 阅读详情


二叉树的三种遍历方式,其中每一种遍历方式都有三种实现方式。

节点定义:

struct TreeNode
{
    int val;
    TreeNode *left,*right;
    TreeNode(int val){
        this->val = val;
        this ->left = this->right = NULL;
    }
};

图形展现

1.先序遍历:

按照根节点->左子树->右子树的顺序访问二叉树
在这里插入图片描述

先序遍历:(1)访问根节点;(2)采用先序递归遍历左子树;(3)采用先序递归遍历右子树;

(注:每个节点的分支都遵循上述的访问顺序,体现“递归调用”)

先序遍历结果:A BDFE CGHI

思维过程:(1)先访问根节点A,

(2)A分为左右两个子树,因为是递归调用,所以左子树也遵循“先根节点-再左-再右”的顺序,所以访问B节点,

(3)然后访问D节点,

(4)访问F节点的时候有分支,同样遵循“先根节点-再左–再右”的顺序,

(5)访问E节点,此时左边的大的子树已经访问完毕,

(6)然后遵循最后访问右子树的顺序,访问右边大的子树,右边大子树同样先访问根节点C,

(7)访问左子树G,

(8)因为G的左子树没有,所以接下俩访问G的右子树H,

(9)最后访问C的右子树I

2.中序遍历:

按照左子树->根节点->右子树的顺序访问

在这里插入图片描述

中序遍历:(1)采用中序遍历左子树;(2)访问根节点;(3)采用中序遍历右子树

中序遍历结果:DBEF A GHCI

3.后序遍历:

按照左子树->右子树–>根节点的顺序访问

在这里插入图片描述

后序遍历:(1)采用后序递归遍历左子树;(2)采用后序递归遍历右子树;(3)访问根节点;

后序遍历的结果:DEFB HGIC A

小结:三种方法遍历过程中经过节点的路线一样;只是访问各个节点的时机不同,递归算法主要使用堆栈来实现。

附:二叉树的先序遍历

二叉树的先序遍历

附:二叉树的中序遍历

二叉树的中序遍历

附:二叉树的后序遍历

二叉树的后序遍历

附:二叉树的三种遍历对比及用图片展现说明

二叉树的三种遍历对比及用图片展现说明

总结
  上述三种遍历方式时间复杂度和空间复杂度分析:

1.递归遍历和非递归遍历 时间复杂度0(n) 空间复杂度O(n)

2.Morris遍历 时间复杂度0(n) 空间复杂度O(1)

二叉树三种遍历(动态图+代码深入理解) 文章目录一、图示理解(图片是一位前辈所留,在此感谢)1、先序遍历2、中序遍历3、后序遍历4、层序遍历二、深入理解三种遍历让我们来理解一下绕着外围跑一整圈的真正含义是:遍历所有结点时,都先往左孩子走,再往右孩子走。下面做一个实例吧三、代码实现加以理解以下是C语言全部代码实现下面是同样的例子用c++实现,大家可以参考一下 一、图示理解(图片是一位前辈所留,在此感谢) 1、先序遍历 先序遍历可以想象成,... 阅读详情

相关推荐

二叉树大总结1_二叉树的各种题(遍历、查找)

二叉树大总结1_二叉树的各种题(遍历、查找等),是网上一个不错的学习例子。

图解二叉树的三种遍历

二叉树 1、二叉树的遍历 前序遍历:根结点 —> 左子树 —> 右子树 中序遍历:左子树—> 根结点 —> 右子树 后序遍历:左子树 —> 右子树 —> 根结点 层次遍历:仅仅需按层次遍历就可以 前序遍历:1 2 4 5 7 8 3 6 中序遍历:4 2 7 5 8 1 3 6 后序遍历:4 7 8 5 2 6 3 1...

XiangYida 3万+

网易数智CoreAgent实战:5步教你打造企业级AI数字员工(附避坑指南)

本文以网易数智CoreAgent智能体协作中枢为核心,提供了一份企业级AI数字员工的实战部署指南。文章详细拆解了从环境准备、智能体配置、业务集成、安全合规到效果评估的五个关键步骤,并分享了部署过程中的常见“避坑”经验,旨在帮助企业技术团队高效、安全地将AI智能体落地于实际业务场景,解决AI落地难题。

rice5的博客 954

测试开发基础之算法(11):二叉树的三种遍历算法及典型题解

二分查找 https://www.cnblogs.com/longyunfeigu/p/9316082.html 散列表 python的dict 二叉树 堆 python的heapq 字符串匹配 图 贪心、分治、回溯和动态规划

刘春明的博客 4403

ctf——writeup

ctf线上赛——第三关地址:http://106.75.86.18:2222提示:ip spoofing——ip伪造首先访问目标地址,一个正常的网页,挺文艺的。上面有些提示。根据上面的提示,我们浏览网页。找了好久,终于找到你。这个跳转链接。(在这个页面下方)我们接着点击这个链接,就跳转到administrator.php这个页面了。看到这个登录页面,就要知道用户名,密码,可是没有怎么办。一开始也试

Child_by_dream的博客 1320

通达信浮筹多空波段抓牛擒龙指标公式源码

VAR33:=VA3>=REF(VA4,1) AND C<REF(C,1) AND VAR19=60 AND VAR18=0 AND 活跃线>=REF(活跃线,1) AND VA12<REF(VA13,1);DRAWTEXT(VAR28 AND COUNT(VAR28,30)=1,65,' ★超涨注意风险'),COLOR0000FF;DRAWTEXT(VAR26 AND COUNT(VAR26,30)=1,90,' ←继续等'),COLOR00FFFF;浮筹线:VA3,COLORFF00FF;

2401_86043146的博客 5265

图解法:三分钟掌握二叉树的三种遍历

二叉树作为树中的一种特殊存在机制,人们对于它的排序总结出来了三种方式,让我们一起探寻它的魅力吧! 测试对象 1.先序遍历 首先看一下排序规则 先访问根节点 再先序访问左子树 再先序访问右子树 看上面的素材,得知根节点为A, 其中左子树为 右子树为 无论是左子树还是右子树,其本质还是一棵树,所以其先序的规则还是要遵守的。(先访问根节点,再先序访问左子树,再先序访问右子树)。结果...

攻城小弟的分享社区 5080

[亚信线上教学] AX58100: EtherCAT从站设备仿真功能设计教学

什么情况需要开启EtherCAT从站设备仿真功能呢? 一般来说, 当EtherCAT从站产品,不需要使用额外的微控制器介入,或使用不具备EtherCAT从站通讯协议栈的微控制器一同协作的情况下,就必须开启EtherCAT从站设备仿真功能,这样EtherCAT主站才能够正常设置从站设备的工作状态. 亚信AX58100 EtherCAT从站控制芯片的优点 AX58100 EtherCAT从站控制器, 集成2个百兆以太网Phis, 并支持一些额外的控制接口, 例如脉冲宽度调变, 增量, 霍尔编码器, .

allanchou1的专栏 7425

二叉树的三种遍历方式

前序遍历//中序遍历//后序遍历

q38491的博客 813

服务器被矿工入侵记录

一次服务器被矿工入驻的处理记录

王瑞的技术专栏 1333

MDB协议中设备级别和选项(Levels and Options)

MDB协议的LEVEL级别介绍

hbstart的博客 939

二叉树的三种遍历:先序、中序和后序

这里用到递归的函数就是PreOrderTraverse,但是里面的后面那个参数,也就是Status(*Visit)(TElemType e),这个其实是指针函数,也就是说,函数名用指针指向,而注释里面也给出了Visit函数的一个例子,直接printf,在这里递归的函数就成了PreOrder(T),对于一开始的T——这个指针来说,它其实就是根节点的指针,而if语句里面的T->lchild,就是根结点的左孩子,同时也是二叉树根结点的左子树的根结点。(写到这里我才发现我之前画的二叉树都是带有箭头的!

Everybodynow的博客 2170

告别Vivado自带编辑器!手把手教你用Sublime Text 4 + Icarus Verilog搭建FPGA开发环境(Windows 10/11)

本文详细介绍如何在Windows 10/11系统下,使用Sublime Text 4和Icarus Verilog搭建高效的FPGA开发环境,替代Vivado自带编辑器。通过配置语法检查、代码高亮和智能补全等功能,提升Verilog开发效率,实现专业级工作流。

weixin_30684743的博客 427

数据结构-二叉树:给出前中后其中两种遍历顺序,如何求第三种?超详细解析

大家好,我是 @愿此后再无WA,可以叫我小A,一位阳光帅小伙,对算法领域比较感兴趣。如果我的文章对您有用,欢迎持续关注,我们一起进步! 最近刷题遇到了一个关于二叉树的问题,因为有些知识点比较模糊于是我又补了一下数据结构,看数据结构的过程中发现了 “在二叉树中,给出前中后其中两种遍历顺序,如何求第三种?” 这种问题,感觉挺重要的,于是我就记录了下来,也将自己的思路分享跟大家,希望对各位有所帮助。

lishuaigell的博客 2484

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【Java第十九期】:二叉树的三种遍历方法

二叉树的三种重要的遍历方式

m0_62262008的博客 948

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

二叉树中序遍历的三种方法

常用的二叉树遍历方法有两种

Rem_little_fan_boy的博客 2500

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

关于二叉树的前序、中序、后序三种遍历

关于二叉树的前序、中序、后序三种遍历 二叉树遍历分为三种:前序、中序、后序,其中序遍历最为重要。为啥叫这个名字?是根据根节点的顺序命名的。 比如上图正常的一个满节点,A:根节点、B:左节点、C:右节点,前序顺序是ABC(根节点排最先,然后同级先左后右);中序顺序是BAC(先左后根最后右);后序顺序是BCA(先左后右最后根)。 比如下图二叉树遍历结果 前序遍历:ABCDEFGHK 中序遍历:BD...

qq_42915525的博客 1142

二叉树的遍历及求二叉树的结点个数

用递归的思想求二叉树的遍历及求二叉树的结点数

m0_73488514的博客 2316

二叉树的先序遍历

文章目录先序遍历1.递归实现2.使用辅助栈3.Morris遍历 二叉树的三种遍历方式,其中每一种遍历方式都有三种实现方式。 节点定义: struct TreeNode { int val; TreeNode *left,*right; TreeNode(int val){ this->val = val; this ->left = this->right = NULL; } }; 先序遍历 以上面这张图为例:我们讲讲树

Lystro的博客 1340

二叉树的中序遍历

文章目录中序遍历1.递归实现2.使用辅助栈3.Morris遍历 二叉树的三种遍历方式,其中每一种遍历方式都有三种实现方式。 节点定义: struct TreeNode { int val; TreeNode *left,*right; TreeNode(int val){ this->val = val; this ->left = this->right = NULL; } }; 中序遍历 中序遍历:先访问左孩点,然后访问

Lystro的博客 306

数据结构—二叉树的建立与三种遍历方法

数据结构—二叉树的建立与三种遍历方法 在知道了树这样的数据结构之后,我们知道其实有很多种方法可以表示树的结构,比如双亲表示法,孩子表示法,兄弟表示法等等。但是对于我们平时最常用的数据结构——二叉树,我们该如何在计算机上建立其数据结构呢? 1.二叉树的建立 看下面的这幅图片,我们现在要建立这样一个二叉树,我们的思路大致是这样: 从根节点开始建立,然后先从做节点开始,把它也当成一...

wintershii的博客 969

二叉树的后序遍历

文章目录后序遍历1.递归实现2.使用辅助栈3.Morris遍历实现 二叉树的三种遍历方式,其中每一种遍历方式都有三种实现方式。 节点定义: struct TreeNode { int val; TreeNode *left,*right; TreeNode(int val){ this->val = val; this ->left = this->right = NULL; } }; 后序遍历 后序遍历:先访问左孩子,然后

Lystro的博客 843

【数据结构初阶】新学期带你领跑二叉树,二叉树的迭代遍历,递归遍历详解,建议收藏

二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个结点最多只能有两棵子树,且有左右之分 。

jhao的博客 1531

二叉树的创建和三种遍历

#include&amp;lt;stdio.h&amp;gt; #include&amp;lt;stdlib.h&amp;gt; #include&amp;lt;malloc.h&amp;gt; typedef char TElemType; #define MAX_TREE_SIZE 100 //树的存储结构 //双亲表示法 typedef struct { TElemType data; int parent; }P

ZJKL_Silence的博客 484

(Java)二叉树的三种遍历(非递归实现)

将上述过程画图说明,便于理解:参考代码:public class Solution {public IList PreorderTraversal(TreeNode root) {List list = new ArrayList();Stack s = new Stack();if(root==null){return list;}TreeNode cur = root;s.push(cur);while(!s.empty()){cur = s.pop();while(cur!=null){lis

F1520080的博客 1219
上一篇: 重建二叉树
下一篇: 二叉树的先序遍历
、工藤新一
博客等级 码龄6年 1227粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

、工藤新一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值