图说二叉树添加数据原理以及遍历原理
2017-05-03 19:12
239 查看
一、图说二叉树添加数据原理
前提说明:有一个学生类Student,属性:name,age;
排序:只实现age排序,即只要年龄相同则认为是相同对象(因为是说明添加原理,只要弄懂了最简单的一种,即使有多个排序,都会知道其添加方式,所以这里就用最简单的方式进行说明了)
见下图
细说步骤:
1,添加第一个数据25 2,添加第二个数据23,比25小,添加在左边 3,添加第三个数据18,比25小,添加在左边,再与23比较,比23小,添加在23左边 4,添加第四个数据30,比25大,添加在右边 5,添加第五个数据28,比25大,添加在右边,再与30比较,比30小,添加在30左边 6,添加第六个数据7,比25小,添加在左边,再与最左边的数据18比较,比18小,添加在左边 7,添加第七个数据43,比25大,添加在右边,再与最右边的数据30比较,比30大,添加在30的右边。 {特别说明:若第七个数据为29,那么先于最右边数据30比较,比30小,添加在30左边,再与28比较,比28大,添加在28右边} 8,添加第八个数据8,比25小,添加在左边,再与最左边数据7进行比较,比7大,添加在7右边
注意:每次都是先于根(第一个数据)进行比较,之后与对应侧(最左侧或最右侧数据)进行比较,来判定相对于该数据的左右
特别说明:最左侧和最右侧是指根分支下的两个大分支的数据
示例中根的两大分支下的数据分别如下:
左侧:23,18,7
右侧:30,43
二、二叉树遍历原理
这里只说一种遍历方式的原理,因为只要弄懂这一种的原理,其他遍历方式的原理自然也就懂了。前序遍历:先访问根节点,再访问左子树,最后访问右子树
中序遍历:先访问左子树,再访问根节点,最后访问右子树
后序遍历:先访问左子树,再访问右子树,最后访问根节点
层序遍历:每一层从左到右访问每一个节点。
图中的写的序号是添加数据时的顺序:
细说前序遍历:先访问根节点,再访问左子树,最后访问右子树
注意:这里说的左右子树,是指一个节点的左右,这里应该先把25左侧遍历完,再遍历右侧。都是先遍历每个节点的左侧,遍历完后再遍历右侧
1,先访问根节点:25 先遍历25的左子树: 2,再访问左子树:23,18,7,20 3,再访问右子树:9 ec30 25的左子树遍历完毕,开始遍历右子树: 4,再访问25右子树内容:30,28 5,再访问下一层:43,38,36 6,在访问下一层:45 最后的遍历结果为: 25,23,18,7,20,9,30,28,43,38,36,45
其他:中序,后序- - - - -与前序类似
细说层序遍历:每一层从左到右访问每一个节点
1,层序遍历是一层一层的遍历的 2,第一层:25 3,第二层:23,30 4,第三层:18,28,43 5,第四层:7,38,45 6,第五层:20,9,36 最后的遍历结果是: 25,23,30,18,28,43,7,38,45,20,9,36
相关文章推荐
- C#实现二叉树数据结构以及先序、中序、后续遍历
- 【数据结构实验】二叉树的建立以及遍历
- 数据结构之二叉树 (构造 拷贝构造 以及前序中序后续三种遍历方法)
- linux学习总结(数据结构——树、二叉树以及遍历)
- 前后端分离,动态添加文本框以及回填数据
- javascript实现二叉树的创建,遍历,添加,查找最大值最小值和指定值的寻找及删除功能——递归的多次运用
- 【数据结构与算法】二叉树 遍历
- 【iOS开发-60】案例学习:多组数据的tableView设置、添加右側组索引、多层数据模型设置以及valueForKeyPath
- java实现二叉树的构建以及3种遍历方法
- 数据结构——二叉树遍历之“递归与非递归遍历”
- 数据结构——二叉树的遍历
- SDUT 2136 数据结构实验之二叉树的建立与遍历
- 【COCOS2D-X(1.X 2.X) Json(cpp版)及新加字体库篇】在Cocos2dx引擎中封装、解析Json(cpp版)数据以及添加自定义字体库 .
- 动态油标数据获取以及遍历
- 二叉树先序、中序、后续遍历递归以及非递归java实现
- multimap实例 -- 添加、遍历数据
- 层次遍历二叉树以及遍历第K层二叉树
- 17 Jquer定时刷新以及循环遍历功能和ajax 的异步请求数据
- java创建二叉树以及8种遍历方法
- 数据结构(六)——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现