数据结构:树和二叉树

当当当~~~~欢迎大家阅读,接下来我们一起学习数据结构中的树和二叉树

一、目录

一、树

(一)树的定义
(二)树的表示方法
(三)涉及到的知识点

二、二叉树

(一)定义
(二)基本形态
(三)性质
(四)特殊情况
(五)存储结构

三、树,森林,二叉树的转换

(一)树和森林到二叉树的转换
(二)二叉树到树,森林的转换

四、最优二叉树(哈夫曼树)

(一)相关知识点
(二)哈夫曼算法实现


数据结构:树和二叉树_第1张图片

快来一起学习呀~~~~ 

二、学习内容

一、树

(一)树的定义

(1)树是n个结点的有限集T
(2)有且只有一个特定的称为根的结点
(3)当n>1时,其余的结点可分为m个互不相交的有限集,其中每个集合本身又是一棵树,称为根的子树

(二)树的表示方法

(1)树形图表示法
(2)嵌套集合的表示形式
(3)凹型表示法
(4)广义表的形式表示

(三)涉及到的知识点

(1)度:一个结点拥有的子树数称为该结点的度
(2)叶子结点(终端结点):度数为零的结点
(3)分支结点(内部结点):度数不为零的结点
(4)孩子结点的父结点(或双亲):树中某个结点子树的根称为该结点的孩子,相应的该结点称为孩子结点的父结点或双亲结点
(5)路径:从树根到数中其余结点均存在唯一的一条路径
(6)深度或高度:根为第一层,树中结点的最大层次称为树的深度或高度
(7)有序树和无序树:如果将树中结点的个子树看成是从左到右依次有序且不能交换,则该树为有序树否则为无序树
(8)森林:是m棵互不相交的树的集合,一棵树去掉根结点,变成森林。加上根结点,把子树都连起来,森林变成一棵树

二、二叉树

(一)定义

是n个结点的有限集合,它的每个结点至多只有两棵子树

(二)基本形态

(1)空二叉树
(2)只有单个根结点的二叉树
(3)只有根结点及左子树的二叉树
(4)只有根结点及右子树的二叉树
(5)有根及左,右子树的二叉树

(三)性质

(1)在二叉树的第i层上至多有2的i-1次方个结点
(2)深度为k的二叉树至多有2的k次方-1个结点
(3)对任何一棵二叉树T,若其终端结点树为n0,度数为2的结点数为n2,则n0=n2+1
(4)具有n个结点的完全二叉树的深度为[logn]+1或[log(n+1)]

(四)特殊情况

(1)满二叉树:每一层的结点数都达到最大值
(2)完全二叉树:k层上的结点都集中在该层最左边的若干位置

(五)存储结构

(1)顺序存储结构:能够得到一个反应整个二叉树结构的线性序列,适用于完全二叉树
(2)链式存储结构:
适用于一般二叉树,二叉链表是一种常用的二叉树存储结构
通常每个结点设置三个域:值域,左指针域和右指针域
有时为了便于查找结点的双亲,还可以在结点的结构中增加一个指向其双亲的指针

三、树,森林,二叉树的转换

(一)树和森林到二叉树的转换

(1)树转化到二叉树:首先在所有兄弟结点之间加一道连线,然后再对再对每个结点保留长子的连线,去掉该结点与其他孩子的连线,由于树根没有兄弟,所以转换后的二叉树,其根节点的右子树必为空
(2)森林转化到二叉树:先将森林中的每棵树转化为二叉树,然后再将各二叉树的根结点看作是兄弟连在一起,形成一棵二叉树

(二)二叉树到树,森林的转换

若二叉树中结点x是双亲y的左孩子,则把x的右孩子,右孩子的右孩子,都与Y用连线连起来,然后去掉所有双亲到右孩子的连线

四、最优二叉树(哈夫曼树)

(一)相关知识点

(1)路径长度:两个节点构成的路径上的分支数目
(2)树的路径长度:树根到树中每个结点的路径长度之和
(3)权:给树中的结点附上一个具有某种意义的实数
(4)带权路径长度:路径长度与权的乘积
(5)最优二叉树:带权路径长度最小的二叉树


(二)哈夫曼算法实现

(1)先给出一些带权值的根结点,左右树均为空
(2)选出两棵根结点的权值最小的树作为一棵新树的左右子树,且新树的附加根结点的权值,为其左右子树上根结点的权值之和
(3)重复操作
(4)直到F只有一棵树为止,此树便是哈夫曼树
总结:进行n-1 次合并,产生n-1个新结点,选取最小权值和次小全职的两个根节点,将这两个结点的权值之和做为新结点的权值。

以上就是数据结构中树和二叉树的内容啦,希望我的文章对你有所帮助,如果有错误的地方还望大家批评指正,谢谢大家阅读!

数据结构:树和二叉树_第2张图片

你可能感兴趣的:(基础知识,数据结构)