二叉树,树和森林

考试内容

二叉树、树和森林的定义

树:

树(Tree)是n(n>=0)个结点的有限集,它或为空树(n= 0); 或为非空树,对于非空树T:

  • 有且仅有一个称之为根的结点;
  • 除根结点以外的其余结点可分为m(m>0)个互不相交的有限集T1 , T2 , …,其中每
    一个集合本身又是一棵树, 并且称为根的子树。

二叉树:

二叉树(Binary Tree)是n(n>=0)个结点所构成的集合,它或为空树(n= 0); 或为非空树,对于非空树T:

  • 有且仅有一个称之为根的结点;
  • 除根结点以外的其余结点分为两个互不相交的子集T1和T2, 分别称为T的左子树和右子
    树,且T1和T2本身又都是二叉树。

二叉树和树的区别:

  • 二叉树每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点);
  • 二叉树的子树有左右之分,其次序不能任意颠倒。

二叉树的实现(包括顺序存储结构和链式存储结构)、二叉树的遍历;

顺序存储结构:

链式存储结构:

二叉树的遍历:
  • 前序遍历

若二叉树为空,则空操作;否则
(1)访问根结点;
(2)先序遍历左子树;
(3)先序遍历右子树。

  • 中序遍历

若二叉树为空,则空操作;否则
(1)中序遍历左子树;
(2)访问根结点;
(3)中序遍历右子树;

  • 后序遍历

若二叉树为空,则空操作;否则
(1)后序遍历左子树;
(2)后序遍历右子树;
(3)访问根结点

二叉树结构下的应用及扩展,例如二叉检索树、2-3-4 树、Huffman 编码以及堆

二叉检索树
2-3-4树
Huffman编码

哈夫曼(Huffman)树又称最优树,是一类带权路径长度最短的树

平衡二叉树的定义、平衡因子的定义以及平衡二叉树的旋转操作

平衡二叉树
平衡因子
平衡二叉树的旋转:

树和森林的存储结构、树和森林的遍历以及森林与二叉树的转换;

树和森林的储存结构
  • 双亲表示法

这种表示方法中, 以一组连续的存储单元存储树的结点,每个结点除了数据域data外,还附
设一个parent域用以指示其双亲结点的位置。

这种存储结构利用了每个结点(除根以外)只有唯一的双亲的性质。在这种存储结构下, 求
结点的双亲十分方便, 也很容易求树的根,但求结点的孩子时需要遍历整个结构

  • 孩子表示法

由于树中每个结点可能有多棵子树,则可用多重链表, 即每个结点有多个指针域, 其中每个
指针指向一棵子树的根结点

  • 孩子兄弟法

又称二叉树表示法,或二叉链表表示法,即以二叉链表做树的存储结构。链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点,分别命名为firstchild 域和nextsibling域

这种存储结构的优点是它和二叉树的二叉链表表示完全一样, 便千将一般的树结构转换为二叉树进行处理, 利用二叉树的算法来实现对树的操作。因此孩子兄弟表示法是应用较为普遍的一种树的存储表示方法

森林与二叉树的转换:
  • 森林转换成二叉树

如果F={T1,T2,…,几}是森林,则可按如下规则转换成一棵二叉树B= (root, LB, RB)。
(1)若F为空,即m= o,'则B为空树;
(2)若F非空,即m"‘F-0, 则B的根root即为森林中第一棵树的根ROOT(T1 ); B的左子树
LB是从兀中根结点的子树森林F尸{T11, T12, …, T1m}转换而成的二叉树;其右子树RB是从森林
F’= {T2, T3 , …,几} 转换而成的二叉树

  • 二叉树转换成森林

如果B= (root, LB, RB)是一棵二叉树,则可按如下规则转换成森林F={T1,T2 , …,Tm}:
(1)若B为空,则F为空;
(2)若B非空,则F中第一棵树兀的根ROOT(T1 )即为二叉树B的根root; T1中根结点的子> 树森林F1是由B的左子树LB转换而成的森林;F中除T1之外其余树组成的森林F’={T2 ,T3 , …}是由B的右子树RB转换而成的森林。

树和森林的遍历

当以二叉树的儿子兄弟表示树时

树的先根遍历和后根遍历可借用二叉树的先序遍历和中序遍历的算法实现:

树的先根遍历==二叉树的先序遍历

树的后根遍历==二叉树的中序遍历

并查集抽象数据类型的定义以及实现;

考试要求

掌握二叉树、树和森林的定义以及它们之间的异同点

掌握二叉树的四种遍历,并具有能够依赖遍历完成对二叉树进行操作的能力

理解二叉树采用顺序存储结构和链式存储结构的差异性

掌握利用二叉树及其扩展下的检索技术

掌握 Huffman 编码、堆的实现及应用

理解平衡二叉树的意义

掌握平衡二叉树的旋转操作

掌握树、森林能够采用的各种存储方式的差异性

掌握树和森林与二叉树的转换

掌握树、森林在遍历方面和二叉树的不同以及相关性

理解并查集的意义,以及掌握并查集的基本操作的实现

数据结构与算法分析-二叉树,树和森林相关推荐

  1. 6.4 树和二叉树-树和森林

    树和二叉树-树和森林 1. 树和森林的表示方法 1.1 树的三种存储结构-`双亲`表示法 1.2 树的三种存储结构-`孩子链表`表示法 1.3 树的三种存储结构-`孩子兄弟(二叉链表)(二叉树)`表示 ...

  2. 理论基础 —— 二叉树 —— 树、森林、二叉树的转换

    [概述] 从树的孩子兄弟表示法和二叉树的二叉链表表示可以看出,树的孩子兄弟表示法实质上是二叉树的二叉链表存储形式,第一个孩子指针和右兄弟指针分别相当于二叉链表的左孩子指针和右孩子指针. 因此,从物理结 ...

  3. 树和森林(森林的部分已经看不懂了)

    树和二叉树 树的概念: 结构特点:有且仅有一个根节点无前驱,有一个或多个叶节点无后继 其余结点有唯一前驱和若干后继 递归描述:空是树,不空时,树由唯一根节点和若干子树组成, 每个子树满足树的定义 in ...

  4. 数据结构(十九) -- C语言版 -- 树 - 树、森林、二叉树的江湖爱恨情仇、相互转换

    内容预览 零.读前说明 一.树转换为二叉树 二.二叉树转换为树 三.二叉树转换为森林 四.森林转换为二叉树 五.树与森林的遍历 5.1.树的遍历 5.2.森林的遍历 零.读前说明 本文中所有设计的代码 ...

  5. 《数据结构与算法》(十一)- 树、森林与二叉树的转换及哈夫曼树详解

    目录 前言 1. 树.森林与二叉树之间的转换 1.1 树转换为二叉树 1.2. 森林转换为二叉树 1.3. 二叉树转换为树 1.4 二叉树转换为森林 1.5 树与森林的遍历 2. 哈夫曼树及其应用 2 ...

  6. 数据结构-树和二叉树01(定义、度、深度、有序树、森林)

    树的定义 树作为一种一对多的数据结构,其定义如下: 树(Tree)是n(n ≥ 0)个结点得有限集.n = 0时称为空树.在任何一颗非空树中: (1)有且仅有一个特定的称为根(Root)的结点: (2 ...

  7. 数据结构——树、森林和二叉树之间的转换

    摘自大佬博客http://www.cnblogs.com/zhuyf87/archive/2012/11/04/2753950.html 树转换为二叉树 (1)加线.在所有兄弟结点之间加一条连线. ( ...

  8. 数据结构-----二叉树,树,森林之间的转换

    图片和转换步骤来自这里 本文主要描述具体实现 用一种略微老土的话描述: 二叉树:每一节点最多有2个子节点,左边的叫左节点,右边的叫右节点,自己叫根节点. 树:每个节点的子节点数量不受限制. 森林:由若 ...

  9. [数据结构]树、森林与二叉树之间的相互转换方法

    树.二叉树与森林的相互转换 本文只给出树.森林与二叉树之间的转换方法,而详细的证明过程不在本文讨论范围之内. 树 → 二叉树 在所有兄弟结点之间加一连线. 对每个结点,除了保留与其长子的连线外,去掉该 ...

最新文章

  1. LabVIEW图像分割算法(基础篇—6)
  2. 新年新方向-斩获新职位
  3. 计算机睡眠时间 win7,技术编辑帮你win7系统设置计算机睡眠时间的详细解法
  4. SAP PI - 单栈与双栈
  5. 快速定位Product assignment block里对应的修改逻辑使用的function module
  6. C语言循环为1404的循环,考试,求大神帮忙,C语言,小弟感激不尽
  7. 领域应用 | 常识性概念图谱建设以及在美团场景中的应用
  8. 安装python3.6.1_如何安装python3.6.1/
  9. 超详细的Java面试题总结之JavaWeb基础知识总结,java开发面试笔试题
  10. Java经典设计模式-创建型模式-单例模式(Singleton)
  11. gsm模块 java 录音_深入详解Android GSM驱动模块
  12. easyui combogrid组件 setValue 影响
  13. Echarts图表之南丁格尔图
  14. PS 曲线(改变图片不同的色彩效果)
  15. MFC入门(三)-- MFC图片/文字控件(循环显示文字和图片的小程序)
  16. android studio 使用夜神模拟器
  17. python输入第十个斐波那契数列,0,1,1,2,3,5,8,13,21,34
  18. 洗地机哪个牌子好?口碑最好的洗地机
  19. 小米11即将发布,这是小米进军高端市场最好的机会?
  20. Google 文档 地址

热门文章

  1. kafka中的ISR、AR又代表什么?ISR伸缩又是什么?
  2. 【ARMv8基础篇】DMC-400控制器简介
  3. python 匹配两个字符串的相似度
  4. python中排序从小到大_python怎么从小到大排列
  5. python 匿名回调函数_Python面试题之回调函数
  6. sklearn中warm_start参数的作用详解
  7. 汽车使用总结(一)--汽车车灯使用图解大全
  8. Android模拟键盘和键盘监听的一些调研
  9. 使用HttpURLConnection下载网络文件
  10. 面试难,应聘难,好工作,今安在?