一、前序遍历

遍历的过程为:首先访问根节点,再前序访问其左子树,再前序访问其右子树。

输入二叉树:

正确答案为:

[1,3,4,43,3,2,2,2,42]

递归实现:

void 

输出:[1,3,4,43,3,2,2,2,42]

循环实现:

vector

输出:[1,3,4,43,3,2,2,2,42]

二、中序遍历

遍历过程为:首先中序遍历其左子树,访问根结点,中序遍历其右子树,代码如下:

递归实现:

void 

循环实现:

当遇到一个节点时,将其压入栈中,并去访问其左子树,左子树遍历结束后,从栈顶弹出这个节点并访问它,然后再去中序遍历该节点的右子树,代码如下:

vector

三、后序遍历

遍历过程为:后序遍历其左子树,后序遍历其右子树,访问根结点,代码如下:

递归实现:

void 

循环实现:

对于一个节点而言,要实现访问顺序为左儿子-右儿子-根节点,可以利用后进先出的栈,在节点不为空的前提下,依次将根节点,右儿子,左儿子压栈。故我们需要按照根节点-右儿子-左儿子的顺序遍历树,而我们已经知道先序遍历的顺序是根节点-左儿子-右儿子,故只需将先序遍历的左右调换并把访问方式打印改为压入另一个栈即可。最后一起打印栈中的元素。代码如下:

vector

用c语言实现二叉树的三种遍历_利用循环和递归实现二叉树的三种遍历相关推荐

  1. pat根据中序遍历和先序遍历_算法题399:从前序与中序遍历序列构造二叉树

    (给算法爱好者加星标,修炼编程内功) 来源: 数据结构和算法-山大王wld 问题描述 今天我们就不做关于双指针的了,我们爬到树上玩会儿,做一道关于二叉树的题.今天的题就一句话,根据一棵树的前序遍历与中 ...

  2. 循环、递归与魔术(三)——再谈循环的魔术逻辑与欣赏

    爱学习,勤思考:学数学,玩魔术.欢迎点击头部蓝字关注MatheMagician,这里有你要的奇迹! 前面的文章里,我们讲过了循环和递归的逻辑结构以及循环在魔术的基本应用: 循环.递归与魔术(二)--循 ...

  3. 大数据开发要学哪种编程语言_每个软件开发人员都应该学习的5种编程语言

    大数据开发要学哪种编程语言 我读过某个地方,程序员应该每年学习一种新的编程语言(虽然我认为它是完整的代码 ,但不确定),但是如果您不能这样做,我建议至少学习以下五种编程语言,以便在您的语言中做得更好事 ...

  4. js获取classname值_利用js获取元素class值的两种方法

    我们有时为了达到某种效果,需要以元素的class值为条件做判断. 我们如何利用JavaScript获取元素class的值?我们先看下面代码: x=document.getElementsByTagNa ...

  5. 二叉树的字符图形显示程序_每个程序员都必须知道的8种通用数据结构

    作者:IT-Evan https://www.cnblogs.com/IT-Evan/p/12444968.html 数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操 ...

  6. python函数调用的三种方式_判断python对象是否可调用的三种方式及其区别

    基本上判断python对象是否为可调用的函数,有三种方法: 1.使用内置的callable函数 callable(func) 用于检查对象是否可调用,返回True也可能调用失败,但是返回False一定 ...

  7. 华三comware跳槽_小灰的网工日常之华三瘦转胖AP,我与华三的又一段孽缘呀~~~

    小灰的网工日常之华三瘦转胖AP,我与华三的又一段孽缘呀~~~ 发布时间:2020-07-08 06:03:44 来源:51CTO 阅读:1956 话说临近国庆,项目前期眼看瞅着就要接近尾声,用户要在国 ...

  8. 市面上有哪几种门_目前市面上的成品木门有哪几种

    市面上比较常用的踢脚线有哪几种材质 按木,密度板,高分子,塑钢实木 2020-08-30 目前市面上鹦鹉地板的销量好吗 好 呢,自 " 双 反 "完胜 美 国 后 ,该 地板 销量 ...

  9. MySQL提权的两种方式_利用sqlmap进行mysql提权的小方法(win与liunx通用)

    文章作者:pt007@vip.sina.com 文章来源:https://www.t00ls.net/thread-36196-1-1.html 1.连接mysql数据打开一个交互shell: sql ...

最新文章

  1. SQL 基础之DDL语句创建和管理表(十四)
  2. python canvas画移动物体_如何实现Canvas图像的拖拽、点击等操作
  3. 作者:陈维政,男,北京大学博士生。
  4. CodeIgniter中引用某一个表情(smiley)
  5. iphone型号表_iphone网络制格式怎么看,如何看两网三网、美版、欧版和国行信号到底有么有区别...
  6. notepad怎么设置python为环境变量_notepad
  7. oracle 12c 性能,Oracle 12C 新性能 总结篇
  8. MTK modemlog分析
  9. SSD硬盘的数据恢复
  10. 【杂记】Windows首页挟持病毒查杀过程记录
  11. Java校验身份证号码合法性
  12. kali安装邮件客户端
  13. CNS服务器搭建(配合百度直连)
  14. 同一个实验室,硕士们进了大厂拿高薪,为什么博士却要挤破头进高校?
  15. 服务器完美安装可道云,打造私有网盘
  16. 解決svchost.exe 100%的問題 (真的中毒了)
  17. wxw4444bird
  18. ucla研究生计算机科学,揭秘UCLA研究生录取数据,达到什么标准才能稳被录?
  19. 怎么退出linux配置文件,ubuntu在终端编辑完配置文件怎么退出
  20. linux系统怎么设置硬链接,二、Linux系统硬链接和软链接详细介绍与实践

热门文章

  1. android上层应用apk到G-sensor driver的大致流程
  2. iOS获取camera的yuv数据
  3. 云服务器常用端口及其含义
  4. javamailsender注入失败_springboot拦截异常信息发送邮件提醒
  5. python中使用什么来实现异常捕捉_python 异常捕捉
  6. java枚举返回字符串_枚举工具类-通过给定值获取对应的枚举类
  7. 顺序执行命令需要哪个符号链接_18年MBA联考如何安排答题时间及顺序
  8. easyUI s MVC h分页
  9. linux5.5 dev null,NULL TTY驱动程序将出现在Linux 5.2内核中
  10. java声明接口_为什么必须用Java声明接口?