二叉树的遍历分为  先序遍历,中序遍历,后序遍历,层次遍历  四种遍历。

  这节要分享的是先序遍历

  如图所示,这是一个普通的二叉树。他的先序遍历是:A B D E H C F G  I J

  为什么呢?

  先序遍历的遍历规则是:根 左 右 !!!

详解:先遍历根结点A,

  遍历左子树的根结点B,

  遍历B的左子树根结点D,

  D为叶子节点,遍历B的右子树根节点E,

  遍历E的左子树根节点H,

  H为叶子节点且A的左子树已遍历完,遍历A的右子树根节点C,

  遍历C的左子树根节点F,

  F为叶子节点,遍历C的右子树根节点G,

  遍历G的左子树根结点 I,

  I 为叶子节点,遍历G的右子树根节点J.

  最终得:A B D E H C F G  I J

  总结:从根结点出发,先遍历根结点,再依次将其左右子树以此规则遍历。

小技巧:在先序遍历时,进行如图所示的寻找路径,该路径上每个结点被找到第一次时,将它遍历。(即,从A出发,先遍历A,到B,遍历B,到D,遍历D......)

  最终,即可得该树的先序遍历为 A B D E H C F G I J 

实现代码:

​
​//利用递归来遍历树
//先序遍历函数
void PreOrder(BitTree &T)
{while (T != NULL){//遍历代码visit(T);//左子树PreOrder(T->lchild);//右子树PreOrder(T->rchild);}
}​

数据结构——二叉树的先序遍历相关推荐

  1. 数据结构——二叉树的双序遍历

    设计二叉树的双序遍历算法(双序遍历是指对于二叉树的每一个结点来说,先访问这个结 点,再按双序遍历它的左子树,然后再一次访问这个结点,接下来按双序遍历它的右子树 思路: 1.双序遍历与中序遍历类似,是中 ...

  2. 数据结构与算法之二叉树的先序遍历,中序遍历,后序遍历

    数据结构与算法之二叉树的先序遍历,中序遍历,后移遍历 目录 实现二叉树的先序,中序,后序遍历,包括递归方式和非递归方式 在二叉树中找到一个节点的后继节点 1. 实现二叉树的先序,中序,后序遍历,包括递 ...

  3. 数据结构---前序和中序遍历的二叉树序列还原二叉树

    数据结构-前序和中序遍历的二叉树序列还原二叉树 代码: #include<stdio.h> #include<stdlib.h> typedef struct bstTree ...

  4. LeetCode 92反转链表Ⅱ93复制ip地址94二叉树的中序遍历

    微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...

  5. 二叉树----数据结构:二叉树的三种遍历及习题

    二叉树----数据结构:二叉树的三种遍历,利用递归算法. 关于二叉树的遍历,应用非常广泛,不单单是访问打印结点,还可以进行一系列的操作,如赋值.删除.查找.求二叉树的深度等等. 有递归和非递归两种算法 ...

  6. 二叉树的中序遍历 递归与非递归

    94. 二叉树的中序遍历 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root = [ ...

  7. 每日一题——二叉树的中序遍历

    菜鸡每日一题系列打卡94天 每天一道算法题目 小伙伴们一起留言打卡 坚持就是胜利,我们一起努力! 题目描述(引自LeetCode) 给定一个二叉树,返回它的中序遍历. 示例: 输入: [1,null, ...

  8. pta习题:给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。

    5-6 树的遍历 分数 20 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一 ...

  9. [算法] 二叉树的 先序遍历、中序遍历、后序遍历

    本文根据清华大学邓俊辉老师课程<数据结构>总结,课程地址 . 遍历介绍 按照事先约定的某种规则或次序,对节点各访问一次而且仅一次.与向量和列表等线性结构一样,二叉树的这类访问也统称为遍历( ...

最新文章

  1. mysql远程权限grant_mysql 赋给用户远程权限 grant all privileges on
  2. git拉取单个文件_Git拿来就用
  3. STM32 基础系列教程 44 - FSMC_LCD
  4. VS2017 运行VS2013项目
  5. 数据战略和风险管理系统
  6. 将mysql的data目录移走方法
  7. 分布与并行计算—生产者消费者模型RabbitMQ(Java)
  8. Python笔记(7) 字符串
  9. AI+RPA,让你的工作模式开启“新方式”
  10. udhcpc 后台运行的方法【总结】
  11. linux 时间相关的一些总结
  12. 如何更优雅地切换Git分支
  13. DB2 SQLCODE: -407, SQLSTATE: 23502
  14. 一百多道.NET面试题!
  15. matlab软件安装码,Matlab2017a软件安装包以及安装教程
  16. 2021-08-26 工作记录--YDUI-带确认按钮的弹出框
  17. 【Ignite】使用数据库软件DBeaver管理Apache Ignite
  18. meethigher-与骗子之间的对招
  19. Linux怎么将输入法添加,在Linux系统中给fcitx下的输入法添加自定义词库的方法
  20. 使用 Tesseract 进行文字识别

热门文章

  1. 数据透视表数据空白_更改数据透视表中的空白标签
  2. Windows开发值得推荐的分析工具,值得收藏
  3. 关于学生课堂行为识别算法
  4. 【python】飞机大战小游戏练习
  5. bootstrap-typeahead 自动补全简单的使用教程
  6. android超频使用方法,如何通过超频提升Android平板电脑速度
  7. Android开发中MVC、MVP到MVVM演化
  8. 利用opencv调用笔记本摄像头--python
  9. PHP 函数 数组引用传参数
  10. 惠普Spectre x360 14变形本 评测