当前位置: 首页 > news >正文

数据结构与算法[零基础]---4.树和二叉树

四、树和二叉树

(一)树

1.相关定义

  • 树是由一个或多个结点组成的有限集T,它满足以下两个条件:第一个是有一个特定的结点,作为根结点;第二个其余的结点分成m(m>=0)个互不相交的有限集T0,T1,...,Tn-1。其中每个集合又都是一棵树,称T0,T0,T1,...,Tn-1为根结点的子树
    • 树中各结点的度的最大值则称为树的度。树中结点的最大层次称为树的深度。

2.存储结构

(1)标准存储结构:

        树的结点内容分为两部分,分别为结点的数据和指向子结点的指针数组。对于N度数,在标准存储结构中指针数组有N个元素。

(2)带逆存储结构:

        当程序需从结点返回到其父结点时,在标准存储结构基础上增加一个指向父结点的指针,这种存储形式就是带逆存储结构

3.使用的链表结构

(1)双亲表示法:

        利用每个结点只有一个双亲的特点;求结点的孩子时要遍历整个向量

(2)孩子表示法:

        把每个结点的孩子都排成一个线性表,用链表储存起来,则n个结点有n个孩子链表,而n个头指针又组成了一个线性表

(3)孩子兄弟表示法:

        孩子兄弟表示法(又称二叉树表示法,或二叉链表表示法):结点中的孩子指针域和兄弟指针域分别指向该结点的第一个孩子和下一个兄弟结点

4.树的遍历

        在应用树结构时,常要求按某种次序获得树中全部结点的信息,这种方法的实现叫做树的遍历 

(1)树的先序遍历

        首先访问根结点,然后从左到右遍历根结点的各子树(根-->左-->右)

(2)树的后序遍历

        首先从左到右按后序遍历根结点的各子树,然后访问根结点(左-->右-->根)

(3)树的层次遍历

        首先访问处于0层上的根结点,然后从左到右依次访问处于1层、2层上的结点,即自上而下从左到右逐层访问树各层上的结点(上-->下,每层从左-->右)

(二)二叉树

1.相关定义

        二叉树是一种特殊的树形结构,其结点是第一每次结点至多只有二颗子树;二叉树的子树有左右之分,其次序不能任意颠倒

2.二叉树的性质

  • (1)在二叉树的第i层至多2ⁱ⁻²个结点(i>=1)
  • (2)深度为k的二叉树至多有2ᵏ-1个结点(k>=1)
  • (3)对任何一颗二叉树,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1
  • (4)具有n个结点的完全二叉树的深度为㏒2n+1

3.二叉树的遍历

(1)先序遍历

        访问根结点;访问根结点的左子树;访问根结点的右子树(根-->左-->右)

(2)中序遍历:

        访问根结点的左子树;访问根结点;访问根结点的右子树(左-->根-->右)

(3)后序遍历:

        访问根结点的左子树;访问根结点的右子树;访问根结点(左-->右-->根)

(三)真题实例

  • 二叉树的中序遍历是左-->根-->右,所以是DBGF(左子树),根结点A,GICH(右子树),选B

  • 二叉树的中序遍历是左-->根-->右,所以排除A和D选项,A根节点开始遍历肯定错,H在右子树所以也是错的;然后看一下C选项,A结点根结点在最后肯定是错的;所以选B

  • 二叉树的后序遍历是左-->右-->根,我们只要看到根节点A在最后就是答案,选择C
  • 总结:二叉树也是一个重点!!!上面的例题是教资历年的真题,二叉树的遍历在计算机等级证书也是都会考的。所以,一定要背熟先序、中序、后序的遍历方式,具体怎么记,后序就是根结点最后遍历(先按顺序遍历左,右);先序就是根结点最先遍历(在按顺序遍历左,右);然后中序就是左,根,右。下一篇文章我会介绍图,也是一个常考点,如果你喜欢这篇文章有帮助到你,不要忘记你的点赞跟关注噢!!

相关文章:

  • 视频孪生重构施工逻辑:智慧工地的数字化升级
  • JVM 内存调优
  • ctfshow——web入门191~194
  • 用户态网络缓冲区
  • 【课题推荐】多速率自适应卡尔曼滤波(MRAKF)用于目标跟踪
  • Hi3518E官方录像例程源码流程分析(三)
  • JVM:程序计数器、虚拟机栈、本地方法栈
  • Docker Compose 中配置 Host 网络模式
  • Spring Task(笔记)
  • Android --- FrameWork 入门:Product是什么?
  • winfrom 查询某字符串 找到它在 richTextbox 的位置 定位 并高亮 并且滚动定位到所查询的字符串所在的行
  • Meltdown原理介绍:用户空间读取内核内存
  • apt3.0和apt2.0的区别
  • AI数字人分身无限克隆,开启IP视频创作新纪元!
  • 如何判断一个js对象是否拥有某个属性(区分自身属性和原型链上的属性)?
  • [管理与领导-129]:向上管理-组织架构、股权架构、业务架构、流程架构,看每个人在组织中的位置和重要性
  • Angular 框架详解:从入门到进阶
  • 数据库主从复制
  • 解决Ubuntu终端命令不能补全的问题
  • Linux:解决 yum 官方源无法使用(CentOS 7)
  • 有手机版本wordpress/北京seo优化wyhseo
  • 华为官方网站/互联网广告营销
  • ps做网站设计/问卷调查网站
  • 模仿大型门户网站做ppt/怎么营销推广
  • 96633微信客服人工打不通/百度seo排名优化价格
  • 网站怎么上传模板/网络营销和推广的方法