1.1什么是树:

树是一种非线性的数据结构,其形状也形似一颗树,有其唯一的根,和若干互不相交的子树。

1.2  首先我们先来了解一下树的一个主要的分支——二叉树:如下图

1.3  二叉树的定义:

  • 每个节点最多只有两颗子树。
  • 子树有左子树,右子树,不能颠倒顺序。

2.1二叉树的遍历:

  • 无论是先序遍历还是中序遍历,后序遍历我们都可以采用一个规则来遍历树的每一个节点。
  • 头节点开始——>左子树——>左子树的左子树——>...
  • 当遍历到根节点即该结点没有孩子节点时,则向该节点的父结点返回
  • 则向遍历根节点的父结点的右孩子进行遍历
  • 再重复上述步骤

如图箭头演示的顺序进行:

2.2 先序遍历:

  • 按照上述统一规则,先序遍历就是依次记录沿路第一次经过该结点的元素
  • 如图演示:

先序遍历结果:A1 A2 A3 A4 A5 A6

先序遍历二叉树的代码:(递归)

void preorder(BTNode *p) //p为遍历指针
{if (p != NULL){visit(p);  //当第一次遍历该结点时,就访问操作preorder(p->lchild); //先序遍历左子树preorder(p->rchild); //先序遍历右子树}
}

2.3中序遍历:

  • 按照上述步骤,中序遍历就是依次记录沿路第二次经过时该结点的元素
  • 如图演示:

中序遍历结果:A4 A2 A5 A1 A6 A3

中序遍历的代码:(递归)

​void preorder(BTNode *p) //p为遍历指针
{if (p != NULL){preorder(p->lchild); //遍历左子树visit(p);  //当第二次遍历该结点时,就访问操作preorder(p->rchild); //遍历右子树}
}​​

2.4 后序遍历:

  • 按照上述统一规则,后序遍历就是依次记录沿路第三次经过时该结点的元素
  • 如图演示:

后序遍历结果:A4 A5 A2 A6 A3 A1

后序遍历的代码:(递归)

​
​void preorder(BTNode *p) //p为遍历指针
{if (p != NULL){preorder(p->lchild); //遍历左子树preorder(p->rchild); //遍历右子树visit(p);  //当第三次遍历该结点时,就访问操作}
}​​​

一目了然——二叉树的遍历(先序,中序,后序遍历)相关推荐

  1. Python__数据结构与算法——树、二叉树(实现先、中、后序遍历)

    目录 一.树 二.二叉树 树和前面所讲的表.堆栈和队列等这些线性数据结构不同,树不是线性的.在处理较多数据时,使用线性结构较慢,而使用树结构则可以提高处理速度.不过,相对于线性的表.堆栈和队列等线性数 ...

  2. 二叉树遍历方法——前、中、后序遍历(图解)

    目录 一.前序遍历 (1)递归版本 (2)非递归版本 二.中序遍历 (1)递归版本 (2)非递归版本 三.后序遍历 (1)递归版本 (2)非递归版本 四.总结 五.测试程序 六.程序输出 二叉树的遍历 ...

  3. java中二叉树_Java工程师面试1000题224-递归非递归实现二叉树前、中、后序遍历...

    224.使用递归和非递归实现二叉树的前.中.后序遍历 使用递归来实现二叉树的前.中.后序遍历比较简单,直接给出代码,我们重点讨论非递归的实现. class Node { public int valu ...

  4. 二叉树的前、中、后序遍历

    所谓二叉树遍历是按某种特定规则,依次对二叉树中的节点进行相应的操作,并且每个节点只操作一次.访问结点所做的操作依赖于具体的应用问题. 遍历是二叉树上最重要的运算之一,也是二叉树进行其它运算的基础. 二 ...

  5. 非递归先、中、后序遍历二叉树(C语言)

    文章目录 前言 一.二叉树非递归遍历算法 1.先序遍历 2.中序遍历 3.后序遍历 二.完整程序 三.运行结果实例 前言 本程序采用C语言编写,栈和二叉树的基本操作函数基于严蔚敏老师的<数据结构 ...

  6. 二叉树前、中、后线索化及对应前、中、后序线索化遍历

    二叉树前中后线索化及对应前中后序线索化遍历(图解) 二叉树线索化都是套路,会一种另外两种只是稍微修改一下代码 值得一提的是后序线索化输出,逆序思维将后序线索化看成前序,采用"前序线索化输出& ...

  7. PAT甲级1020 Tree Traversals:[C++题解]树的遍历、由中序序列和后序序列递归建树

    文章目录 题目分析 题目链接 题目分析 题意重述:给定一棵二叉树的后序遍历序列和中序遍历序列,让求层次遍历的序列. 分析: 后序遍历:先 左子树.右子树 ,最后再遍历根结点. 中序遍历:先左子树,再根 ...

  8. 7-10 先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数 (10 分)

    7-10 先序序列创建二叉树,输出先序序列.中序序列.后序序列并输出叶子结点数 (10 分) 对于给定的二叉树,输出其先序序列.中序序列.后序序列并输出叶子结点数. 输入格式: 二叉树的先序遍历序列. ...

  9. 二叉树的构造(前序+中序)---(后序 + 中序)

    二叉树的构造(前序+中序)-(后序 + 中序) 思路:要对前序+中序(后序+中序)的构建树的动态过程要了解,思路比较简单,在了解了这个过程之后,理解下面代码就容易了. 过程 参考图: 前序 + 中序: ...

  10. 先序序列和中序序列构造二叉树,中序序列和后序序列构造二叉树

    1:首先读者要了解二叉树BinaryTree基本概念,其次区分左子树与左孩子节点,右子树与右孩子节点.(在数据结构中      一个节点可以成为一棵树,对于没有孩子节点的节点称为为叶子节点). 2:在 ...

最新文章

  1. ICCV2019最佳论文SinGAN全面解读,看这一篇就懂了
  2. 使用java的html解析器jsoup和jQuery实现一个自动重复抓取任意网站页面指定元素的web应用...
  3. Java Applet 基础
  4. 【C++】C/C++系列教程汇总(更新中......)
  5. verilog扰码器设计及仿真
  6. 控制是否展示_现场展示板管理不在于看,而在于管!
  7. Jquery全选单选功能
  8. 一文了解下对小微风控策略的优雅调整
  9. 05-用两个栈实现一个队列
  10. 【历史上的今天】11 月 6 日:雅虎创始人诞生;Fedora Linux 正式发布;亚马逊进军智能家居
  11. 寻找春天 九宫格日记-2012.09.22
  12. 广东工业大学22级机械考研经验分享
  13. Android恶意样本分析——frida破解三层锁机样本
  14. 冷藏车的热计算机应用,基于CFD的冷链运输车辆车厢微环境动态模拟研究-计算机应用技术专业论文.docx...
  15. 京东店铺托管引流技巧有哪些?
  16. 开发一款系统软件大概需要多少钱呢
  17. 进不了PE,进PE黑屏或点阵屏怎么办
  18. 纯javascript的HTML在线编辑器
  19. MySQL数据库锁表,如何释放锁
  20. java服务器端集成友盟,Android友盟推送集成

热门文章

  1. 使用STM32C103C8T6的注意点
  2. UML笔记一:UML概述三(UML构成、UML中的事物)
  3. noip2014 总结
  4. mos管的rc吸收电路计算_RC吸收电路的设计经验分享
  5. Python拆分PPT文件的方法
  6. Java jcmd内存远大于top_Java堆外内存排查小结
  7. angular路由模拟微信页面切换和页面之间的传值
  8. 无线传感器网络期末复习知识点总结资料
  9. 无障碍出行,他让盲人“看得见”
  10. 创业项目转化落地资源帮助,“汇新杯”大赛助你圆梦