3、非线性结构--树与二叉树——数据结构【基础篇】

非线性结构--树与二叉树

二叉树的基础知识:

        二叉树的特点:

            1、每个结点的度<=2

            2、二叉树是有序树

        二叉树的五种不同的形态:

            1、空树

            2、一个根结点的根树

            3、左子树

            4、右子树

            5、左右并存的二叉树

        二叉树的性质:

            性质1:二叉树第i层上的结点数目最多为 2{i-1} (i≥1)

            性质2:深度为k的二叉树至多有2{k}-1个结点(k≥1)

            性质3:包含n个结点的二叉树的高度至少为log2 (n+1)

            性质4:在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1

二叉树的存储结构:

       顺序存储结构:

             1、连续

            2、编号法

            3、一般的二叉树这样存储会造成大量的空间的浪费

          链式存储结构:

二叉树的遍历形式:

           1、按层遍历——从上到下,从左到右依次访问每个结点

           2、中序遍历 (中缀表达式)——先访问左子树,再访问根结点,最后访问右子树

           3、先序遍历 (前缀表达式)——先访问根结点,再访问左子树,最后访问右子树

           4、后序遍历 (后缀表达式)——先访问右子树,再访问左子树,最后访问根结点

二叉树的一些特点:

           1、如何可唯一地确定一棵二叉树

              先序+中序或后序+中序均可唯一地确定一棵二叉树

              先序序列找根

              中序序列找位置

           2、二叉树的二叉链表存储结构中,有多少个指针域未利用

              二叉树的二叉链表存储结构中,有n+1个指针域未利用,已经使用的有n-1个指针域,共有2n个指针域

线索二叉树:

        实质:对一个非线性结构进行结构化操作,是每个结点(除第一和最后一个外)在这些线性序列中有且有一个前驱结点和后继结点

          线索二叉树寻找某个结点的前驱结点或者后继结点的操作前提是之前指定了某一个遍历的顺序

哈夫曼树:
        1、路径长度:两个结点之间的路径长度是连接两结点的路径上的分支数

        2、树的路径长度:是各结点到根结点的路径长度之和

        3、带权路径长度达到最小的二叉树——最优二叉树

        4、在哈夫曼树中,权值大的结点立根最近

        5、哈夫曼编码——实现数据压缩

            哈夫曼编码是一种无前缀的编码

       6、哈夫曼树的构造

            1)将一组数据按从小到大进行排序
            2)拿出最小的两个数据进行合并,将得到的和的结果最后重新与剩下的数据按照从小到大的顺序进行排序
            3)继续2的操作
            4)直至森林中只有一棵树

            注意:哈夫曼编码时,左子树标注为0,右子树标注为1

            注意:在构造哈夫曼树时,权值小的放到左子树,权值大的放到右子树

树和森林:

        1、树的双亲表示——根没有双亲一般置为-1,根的指针编号为0

        2、树的孩子表示

       3、树的双亲孩子表示

        4、孩子兄弟表示

树、森林和二叉树的转换:

       1、树转换成二叉树:

          连线:将相邻兄弟之间连线

          抹线:抹掉双亲与除左孩子外其它孩子之间的连线

          旋转:只需将树作适当的旋转

          垂直方向或垂直偏左的作其左子树,水平方向的作其右子树

       2、森林转换成二叉树:

          1)将森林中每一棵树分别转换成二叉树

          2)合并:使得第n棵树接入到第n-1棵的右边并成为他的右子树,依次下去,最后直至剩下一棵二叉树

       3、二叉树还原成树或森林:

          1)右链断开

            将二叉树的根结点的右链及右链的右链等全部断开,得到许多棵无右子树的二叉树

          2)将1)中得到的每一棵二叉树都还原成树

树和森林的遍历:

       树和森林只有先序遍历和后序遍历

       1)树的先序遍历

       如果树非空,则先访问根结点,然后依次先序遍历各子树

       2)森林的先序遍历

       如果森林非空,则先访问森林中第一棵树的根结点,再先序遍历第一棵树各子树,再先序遍历第二棵树......直至最后一棵树

       注意:树和森林的先序遍历等价于它转换成的二叉树的先序遍历,树和森林的后序遍历等价于它转换成的二叉树的中序遍历

时间: 2024-07-31 00:57:30

3、非线性结构--树与二叉树——数据结构【基础篇】的相关文章

数据结构 线性结构(数组[列表] ,链表 单链表的增删改查**, 线性结构的应用 队列 栈[函数的调用**]),非线性结构 树

数据结构 参考:http://lupython.gitee.io/ 线性结构 就是能够用一根线串起来的数据结构 数组 (列表) 问:申请数组的前提条件是啥? a[12]?内存需要满足的条件? 答:内存必须有一块连续的内存空间 int a[7] : 声明一个数组,这个数组的数组名是 a, 数组的大小是 7, 数组元素的类型是整型. int a[7] = array(1,2,3,4,5,6,7) 问:如何申请内存? 答:C,C++语言,申请:mallco (28).释放:free(28) 问:int

6-1-二叉树顺序存储结构-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第6章  树和二叉树 - 二叉树顺序存储结构 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.Scanf.c        相关测试数据下载  链

数据结构之树与二叉树(理论篇)

一.树 树的定义:树是n(n>=0)个结点的有限集. 对于任意一棵非空树:(1)有且仅有一个特定的结点称为根结点:(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,T3···,Tm,其中每一个集合本身又是一棵树,并且称为根的子树. 结点:树的结点包含一个数据元素及若干指向其子树的分支. 度(degree):结点拥有的子树数称为结点的度. 叶子(leaf):度为0的结点称为叶子或终端结点:度不为0的结点称为非终端结点或分支结点,除根结点外,分支结点也称为内部节点.

树形结构-树和二叉树(哈夫曼树)

2017-11-17 一.哈夫曼树 (1)哈夫曼树(最优二叉树),是指权值为w1,w2,....,wn的n个叶结点所构成的二叉树中带权路径长度最小的二叉树. (2)从树中一个结点到另一个结点之间的分支构成这两个结点之间的路径,路径上的分支数目称做路径长度. (3)树的路径长度(PL)是从树根到每一个结点的路径长度之和. (4)完全二叉树是这种路径长度最短的二叉树. (5)从树根结点到该结点之间的路径长度与该结点上的权的乘积称为结点的带权路径长度. (6)树中所有叶子结点的带权路径长度之和称为该树

第五章 树和二叉树

上章回顾 单链表的基本操作,包括插入.删除以及查找 双向链表和循环链表的区别 [email protected]:Kevin-Dfg/Data-Structures-and-Algorithm-Analysis-in-C.git 第五章 第五章 树和二叉树 树和二叉树 [email protected]:Kevin-Dfg/Data-Structures-and-Algorithm-Analysis-in-C.git 预习检查 什么是二叉树 树的遍历有哪几种方式 树有哪些应用 [email pr

数据结构(一)数据结构基础

数据结构的基础概念 数据是表征客观事物的可记录可识别的符号集合. 数据: 描述客观事物的数值.字符以及一切能输入到计算机且能被处理的符号集合. 数据元素: 数据元素是组成数据的基本单位,是数据集合的个体. 数据对象: 数据对象是性质相同的数据元素的集合,是数据集的一个子集. 数据结构: 数据结构,是相互之间存在一种或多种特定关系的数据元素集合.强调是带有结构的数据元素的集合,数据元素之间的相互关系,即数据的组织形式,即数据的组织形式. 数据类型: 一组性质相同的值集合以及定义其上的一组操作的集合

数据结构和算法 (二)数据结构基础之树、二叉树

Java面试宝典之二叉树的实现 我们接着上一篇数据结构继续讲解.本章系数据结构之树与二叉树,从这章开始,我们就要介绍非线性结构了,这些内容理解起来比线性表稍难一些,我尽量写的通俗一些,如果读的过程中有任何问题,请按上述方式联系我! 一.树 树 形结构是一类重要的非线性结构.树形结构是结点之间有分支,并具有层次关系的结构.它非常类似于自然界中的树.树结构在客观世界中是大量存在的,例如家 谱.行政组织机构都可用树形象地表示.树在计算机领域中也有着广泛的应用,例如在编译程序中,用树来表示源程序的语法结

数据结构基础温故-4.树与二叉树(上)

前面所讨论的线性表元素之间都是一对一的关系,今天我们所看到的结构各元素之间却是一对多的关系.树在计算机中有着广泛的应用,甚至在计算机的日常使用中,也可以看到树形结构的身影,如下图所示的Windows资源管理器和应用程序的菜单都属于树形结构.树形结构是一种典型的非线性结构,除了用于表示相邻关系外,还可以表示层次关系.本文重点讨论树与二叉树的基本结构和遍历算法等内容. 一.好大一棵树,绿色的祝福 1.1 树的基本概念 Defination:树(Tree)是 n(n≥0)个结点的有限集.n=0时,该树

4、非线性结构--图——数据结构【基础篇】

非线性结构--图 图的几个类别: 有向图 --有向图采用<>表示 无向图--无向图采用()表示 完全图无向图--如果具有n个顶点,n(n-1)/2条边的图 完全图有向图--如果具有n个顶点,n(n-1)条弧的图 稀疏图--如果边数小于完全图的边数 稠密图--如果边数大于完全图的边数 图的几个基本概念: 度--在图中,一个顶点依附的边数或弧的数目,某个顶点的出度和入度之和称为该顶点的度 入度--在图中,一个顶点依附的弧头数目 出度--在图中,一个顶点依附的弧尾数目 图的存贮结构: 1.图的邻接矩