数据结构——二叉树的先序遍历
二叉树的遍历分为 先序遍历,中序遍历,后序遍历,层次遍历 四种遍历。
这节要分享的是先序遍历
如图所示,这是一个普通的二叉树。他的先序遍历是: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. 实现二叉树的先序,中序,后序遍历,包括递 ...
- 数据结构---前序和中序遍历的二叉树序列还原二叉树
数据结构-前序和中序遍历的二叉树序列还原二叉树 代码: #include<stdio.h> #include<stdlib.h> typedef struct bstTree ...
- LeetCode 92反转链表Ⅱ93复制ip地址94二叉树的中序遍历
微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...
- 二叉树----数据结构:二叉树的三种遍历及习题
二叉树----数据结构:二叉树的三种遍历,利用递归算法. 关于二叉树的遍历,应用非常广泛,不单单是访问打印结点,还可以进行一系列的操作,如赋值.删除.查找.求二叉树的深度等等. 有递归和非递归两种算法 ...
- 二叉树的中序遍历 递归与非递归
94. 二叉树的中序遍历 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root = [ ...
- 每日一题——二叉树的中序遍历
菜鸡每日一题系列打卡94天 每天一道算法题目 小伙伴们一起留言打卡 坚持就是胜利,我们一起努力! 题目描述(引自LeetCode) 给定一个二叉树,返回它的中序遍历. 示例: 输入: [1,null, ...
- pta习题:给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。
5-6 树的遍历 分数 20 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一 ...
- [算法] 二叉树的 先序遍历、中序遍历、后序遍历
本文根据清华大学邓俊辉老师课程<数据结构>总结,课程地址 . 遍历介绍 按照事先约定的某种规则或次序,对节点各访问一次而且仅一次.与向量和列表等线性结构一样,二叉树的这类访问也统称为遍历( ...
最新文章
- mysql远程权限grant_mysql 赋给用户远程权限 grant all privileges on
- git拉取单个文件_Git拿来就用
- STM32 基础系列教程 44 - FSMC_LCD
- VS2017 运行VS2013项目
- 数据战略和风险管理系统
- 将mysql的data目录移走方法
- 分布与并行计算—生产者消费者模型RabbitMQ(Java)
- Python笔记(7) 字符串
- AI+RPA,让你的工作模式开启“新方式”
- udhcpc 后台运行的方法【总结】
- linux 时间相关的一些总结
- 如何更优雅地切换Git分支
- DB2 SQLCODE: -407, SQLSTATE: 23502
- 一百多道.NET面试题!
- matlab软件安装码,Matlab2017a软件安装包以及安装教程
- 2021-08-26 工作记录--YDUI-带确认按钮的弹出框
- 【Ignite】使用数据库软件DBeaver管理Apache Ignite
- meethigher-与骗子之间的对招
- Linux怎么将输入法添加,在Linux系统中给fcitx下的输入法添加自定义词库的方法
- 使用 Tesseract 进行文字识别