
第七章:树和二叉树
文章平均质量分 78
kong_xz
这个作者很懒,什么都没留下…
展开
-
树
一、 树的定义形式定义:树:T={D,R}。D是包含n个节点的有穷集合(n≥0)。当n=0时为空树,否则关系R满足以下条件: 有且仅有一个节点d0∈D,它对于关系R来说没有前驱节点,节点d0称作树的根节点。除节点d0外,D中的每个节点对于关系R来说都有且仅有一个前驱节点。D中每个节点对于关系R来说可以有零个或多个后继节点。递归定义:树是由n(n≥0)个节点组成的有限集合(记为T)。其中...原创 2018-03-09 14:03:58 · 3243 阅读 · 1 评论 -
二叉树
一、二叉树概念二叉树是有限的节点集合。这个集合可以是空, 也可以由一个根节点和两棵互不相交的称为左子树和右子树的二叉树组成。注意:二叉树的定义是一种递归定义。在一棵二叉树中,如果所有分支节点都有左孩子节点和右孩子节点,并且叶节点都集中在二叉树的最下一层,这样的二叉树称为满二叉树。下图所示就是一棵满二叉树。可以对满二叉树的节点进行连续编号,约定编号从树根为1开始,按照层数从小到大、同一层从左到右的次...原创 2018-03-09 18:10:38 · 3161 阅读 · 0 评论 -
二叉树的存储结构和实现
一、二叉树存储结构 1)二叉树的顺序存储结构 二叉树的顺序存储结构中节点的存放次序是:对该树中每个节点进行编号,其编号从小到大的顺序就是节点存放在连续存储单元的先后次序。 若把二叉树存储到一维数组中,则该编号就是下标值加1(注意C/C++语言中数组的起始下标为0)。树中各节点的编号与等高度的完全二叉树中对应位置上节点的编号相同。 定义为:typedef ElemType SqBTree[MaxS...原创 2018-03-10 14:20:00 · 22228 阅读 · 0 评论 -
二叉树的遍历
一、二叉树的遍历二叉树遍历的概念: 二叉树的遍历是指按照一定次序访问树中所有节点,并且每个节点仅被访问一次的过程。它是最基本的运算,是二叉树中所有其他运算的基础。1. 先序遍历过程先序遍历二叉树的过程是:① 访问根节点;②先序遍历左子树;③先序遍历右子树。2. 中序遍历过程中序遍历二叉树的过程是:① 中序遍历左子树;② 访问根节点;③中序遍历右子树。3. 后序遍历过程后序遍历二叉树的过程是:...原创 2018-03-10 14:40:42 · 385 阅读 · 0 评论 -
二叉树的构造
一、二叉树的构造 同一棵二叉树具有唯一先序序列、中序序列和后序序列。但不同的二叉树可能具有相同的先序序列、中序序列和后序序列。给定先序、中序和后序遍历序列可以唯一确定这棵二叉树的树形。仅由一个先序序列(或中序序列、后序序列),无法确定这棵二叉树的树形。定理1:任何n(n≥0)个不同节点的二又树,都可由它的中序序列和先序序列唯一地确定。由上述定理得到以下构造二叉树的算法:BTNode *Create...原创 2018-03-10 14:45:42 · 582 阅读 · 0 评论 -
线索二叉树
一、线索二叉树1.线索二叉树的概念 对于具有n个节点的二叉树,采用二叉链存储结构时,每个节点有两个指针域,总共有2n个指针域,又由于只有n-1个节点被有效指针所指向(n个节点中只有树根节点没有被有效指针域所指向),则共有2n-(n-1)=n+1个空链域。遍历二叉树的结果是一个节点的线性序列。可以利用这些空链域存放指向节点的前驱和后继节点的指针。这样的指向该线性序列中的“前驱”和“后继”的指针,称作...原创 2018-03-11 12:23:02 · 371 阅读 · 0 评论 -
哈夫曼树
一、 哈夫曼树的定义 设二叉树具有n个带权值的叶子节点,那么从根节点到各个叶子节点的路径长度与相应节点权值的乘积的和,叫做二叉树的带权路径长度。其中n表示叶子节点的数目,wi表示叶子节点ki的权值,li表示根到ki之间的路径长度(即从叶子节点到达根节点的分支数)。具有最小带权路径长度的二叉树称为哈夫曼树,也是最优树,由哈夫曼于1951提出。 二、 构造哈夫曼树 根据哈夫曼树的定义,一棵二叉树要...原创 2018-03-11 12:34:13 · 815 阅读 · 0 评论