上篇博文主要介绍的是数据结构的线性结构,我们这篇博文介绍非线性结构—树与二叉树,我先介绍树的一些基本概念,树的遍历,再介绍二叉树相关概念和特性,以及二叉树的遍历,最后再树与二叉树的对比,总结。

树为了描述现实世界的层次结构,树结构中一个数据元素可以有两个或两个以上的直接后继元素。

树的基本概念:

树的概念是学习树的关键所在,掌握了树的基本概念,学会树与二叉树,so easy。我通过一棵树来了解树的基本概念,如下图

1、结点的度

结点的度是子结点的个数。例如:结点1有三个字结点2,3,4,所以结点1的度为3。

2、树的度

树的度等于所有结点度中度最高的值。例如:上图中结点度最高为3,所以树的度为3。

3、叶子结点

叶子结点是度为0的结点即没有子结点的结点。例如:上图中3,5,6,7,9,10。

4、分支结点

分支结点是除了叶子结点,树中的其他所有结点。例如:上面树的分支结点为1,2,4,8。

5、内部结点

内部结点是除了根结点以及叶子结点或在分支结点的基础之上在去掉根结点。例如:上面树的内部结点为2,4,8。

6、父结点、子结点、兄弟结点

父节点、子结点和兄弟结点是相对而言的。例如:结点1是结点2,3,4的父节点,结点2,3,4也是结点1的子结点,结点2,3,4又是兄弟结点。

7、层次

图中我们已经表出来了,根为第一层,根的孩子为第二层,依此类推,若某结点在第i层,则其孩子结点在第i+1层。

树的遍历

树的遍历特别简单,我们还是以上面的树为例:

1、前序遍历

基本思想:前序遍历就是先访问根结点,再访问叶子结点。

图中树的前序遍历为:1,2,5,6,7,3,4,8,9,10。

2、后序遍历

基本思想:本后序遍历就是先访问子结点,再访问根结点。

图中树的后序遍历为:5,6,7,2,3,9,10,8,4,1。

3、层次遍历

基本思想:从第一层开始,依此遍历每层,直到结束。

图中树的层次遍历为:1,2,3,4,5,6,7,8,9,10。

二叉树的一些相关概念和特性

学习二叉树的特性几乎可以帮助我们解决所有的二叉树问题,在学习二叉树特性一定要通过上面给出的二叉树进行实践,实践出真理,同时,印象也会更深刻。

一般二叉树性质:

  1. 在非空二叉树的k层上,至多有2k个节点(k>=0)
  2. 高度为k的二叉树中,最多有2k+1-1个节点(k>=0)
  3. 对于任何一棵非空的二叉树,如果叶节点个数为n0,度数为2的节点个数为n2,则有: n0 = n2 + 1

完全二叉树性质:

  1. 具有n个节点的完全二叉树的高度k为[log2n]
  2. 对于具有n个节点的完全二叉树,如果按照从上(根节点)到下(叶节点)和从左到右的顺序对二叉树中的所有节点从0开始到n-1进行编号,则对于任意的下标为k的节点,有:
  • 如果k=0,则它是根节点,它没有父节点;如果k>0,则它的父节点的下标为[(i-1)/2];
  • 如果2k+1 <= n-1,则下标为k的节点的左子结点的下标为2k+1;否则,下标为k的节点没有左子结点.
  • 如果2k+2 <= n-1,则下标为k的节点的右子节点的下标为2k+2;否则,下标为k的节点没有右子节点

满二叉树性质:

在满二叉树中,叶节点的个数比分支节点的个数多1

二叉树遍历

1、前序遍历(与树的前序遍历一样)

基本思想:先访问根结点,再先序遍历左子树,最后再先序遍历右子树即根—左—右。

图中前序遍历结果是:1,2,4,5,7,8,3,6。

2、中序遍历

基本思想:先中序遍历左子树,然后再访问根结点,最后再中序遍历右子树即左—根—右。

图中中序遍历结果是:4,2,7,8,5,1,3,6。

3、后序遍历

基本思想:先后序遍历左子树,然后再后序遍历右子树,最后再访问根结点即左—右—根。

图中后序遍历结果是:4,8,7,5,2,6,3,1。

4、层次遍历(与树的层次遍历一样)

基本思想:从第一层开始,依此遍历每层,直到结束。

图中层次遍历结果是:1,2,3,4,5,6,7,8。

树与二叉树区别

1、树可以有多个子结点,二叉树最多只能两个结点。

2、树中的子结点是无序的,二叉树是分左子结点和右子结点。

3、二叉树不是特殊树,而是独立的数据结构。

总结

这篇博文都是树的基本内容,这些基本内容可以帮助你更加深刻的理解树的其他内容,只要你能努力,世界充满爱。

后续博客的更新列表,敬请期待。

我的软考之路(一)——开篇(已更新)

我的软考之路(二)——J2SE宏观总结(已更新)

我的软考之路(三)——数据结构与算法(1)之线性表(已更新)

我的软考之路(四)——数据结构与算法(2)之树与二叉树(已更新)

我的软考之路(五)——数据结构与算法(3)之图(已更新)

我的软考之路(六)——数据结构与算法(4)之八大排序(已更新)

我的软考之路(七)——数据结构与算法(5)之查找(已更新)

我的软考之路(四)——数据结构与算法(2)之树与二叉树相关推荐

  1. 树的高度从零还是一开始数_数据结构与算法之1——树与二叉树

    数据结构一直是让人头疼,面试遇到手撕算法题时真是慌得不行,从啥也不会刷题刷到游刃有余,路漫漫其修远兮~~.本人还是个算法菜鸟,而且还是想转行互联网的半吊子(好想拿大厂offer啊,幻想中..),希望能 ...

  2. js遍历树节点下的所有子节点_【数据结构与算法】(3)——树和二叉树

    树 树的基本概念 树是一种非线性的数据结构,样子如图所示: 树的主要特点是树中的数据是分层存储的,每个元素称为树的节点,最顶层有且只有一个元素,称为根节点,其余层可以有任意数量的节点.除了根节点,其余 ...

  3. 数据结构与算法学习笔记-树和二叉树

    声明:本博客仅为本人学习途中做的笔记 采自青岛大学王卓老师的视频教学 主要内容为算法思路,具体代码实现还需修改后才能运行,望各位看官多多包涵,您的点赞与评论是对我最大的肯定! 1.树和二叉树的定义 数 ...

  4. 【数据结构与算法基础】树与二叉树的互化

    前言 数据结构,一门数据处理的艺术,精巧的结构在一个又一个算法下发挥着他们无与伦比的高效和精密之美,在为信息技术打下坚实地基的同时,也令无数开发者和探索者为之着迷. 也因如此,它作为博主大二上学期最重 ...

  5. python【数据结构与算法】关于树和二叉树的探索与计算

    文章目录 1 树的基本概念 2 树的存储结构 2.1 双亲表示法 2.2 孩子表示法 2.3 孩子兄弟表示法 3 二叉树 4 二叉树的基本操作 5 二叉树各种计算公式 1 树的基本概念 节点:节点包括 ...

  6. 数据结构与算法 实验5 树、二叉树和森林的基本操作

    1. 实验目的 理解树的存储结构,并掌握树的基本操作. 2. 实验介绍 了解树和森林的概念,包括树的定义.树的术语.掌握二叉树的概念.性质及二叉树的表示.熟练掌握二叉树的遍历算法,并且能灵活运用遍历算 ...

  7. 我的软考之路(六)——数据结构与算法(4)之八大排序

    排序是编程的基础,在程序中会经常使用,好的排序方法可以帮助你提高程序运行的效率,所以学好排序,打好基础,对于程序的优化会手到擒来.无论你的技术多么强,如果没有基础也强不到哪去. 不多说了,我们直接进入 ...

  8. 我的软考之路(九)——总结篇

    经过两个月的备战,软考总算结束了.软考虽然结束了,但是还需要简单的总结一下得与失.我从时间安排,到讲课做真题简单的回顾一下软考的整个过程. 时间安排: 对于时间的安排,整个小组成员每个人都有自己的看法 ...

  9. 系统集成管理师2011下半年软考透解 四

    本文讲的是 :  系统集成管理师2011下半年软考透解 四  , 1 . 项目建议书应该包括的核心内容可不包括 ( ) . A.项目建设必需的条件 B.项目的必要性 C.项目的风险预测及应对措施 D. ...

最新文章

  1. es6 ik分词热更新MySQL_rollup环境搭建(es6转es5、压缩、本地服务器、热更新)
  2. error: 'for' loop initial declarations are only allowed in C99 mode
  3. 2021宁夏高考成绩查询电话,2021宁夏高考成绩什么时候几点可以查
  4. 云开发数据库又增新技能!
  5. C/C++ 中变量的声明、定义、初始化的区别
  6. 解决pip安装模块报错Cannot fetch index base URL http://pypi.python.org/simple/
  7. 苹果官宣春季发布会!不止有iPhone SE 3,还有紫色iPhone 13 Pro?
  8. 「十年老测试」测试员的职场之路
  9. 一篇关于Dataset与泛型、自定义集合的讨论
  10. java map存储格式_java HashMap HashSet的存储方式
  11. Java关键字和标识符
  12. html怎么快捷复制粘贴,如何快速复制粘贴 最全复制粘贴攻略教程大全
  13. jsp html5 模板,JSP标准模板库
  14. switch:欢迎进入迷你游戏平台,选择你喜爱的游戏
  15. 方舟服务器能不能用ce修改器,方舟生存进化CE修改器代码大全
  16. 经典BBS语录2007贺岁版
  17. ffmpeg库编译加文字_我自己的FFMpeg编译之路
  18. MPSK通信系统的Monte Carl仿真(matlab实现,附源码)
  19. datagirdview的单元格双击事件
  20. 一文搞定bp神经网络,bp神经网络的实现

热门文章

  1. 07_Flask闪现 get_flashed_messages()
  2. mysql 的一个错误 Error Code: 2013. Lost connection to MySQL server during...
  3. 最新微信小程序获取音频时长与实时获取播放进度
  4. 初中OJ1997【2015.8.3普及组模拟赛】WZK打雪仗(war)
  5. 英语思维导图大全 定语从句(十四)
  6. 苹果Mac远程控制软件:Screens
  7. 没有Console线,又不知道自己通过哪个IP连接到路由器,怎么办?
  8. 与“她”的初次相遇——数学建模笔记之赛后分析和总结
  9. 【Mysql】Mysql GTID复制进程出现异常,出现断点
  10. 46、微信-群聊列表