第五章 数和二叉树
来源:互联网 发布:好看的纪录片 知乎 编辑:程序博客网 时间:2024/05/31 06:23
祖先、子孙:在树中,如果有一条路径从结点x到结点y,则x称为y的祖先,而y称为x的子孙。
结点所在层数:根结点的层数为1;对其余任何结点,若某结点在第k层,则其孩子结点在第k+1层。
有序树、无序树:如果一棵树中结点的各子树从左到右是有次序的,称这棵树为有序树;反之,称为无序树。
森林:m(m≥0)棵互不相交的树的集合。
树的遍历:从根结点出发,按照某种次序访问树中所有结点,使得每个结点被访问一次且仅被访问一次。
2、前序遍历
树的前序遍历操作定义为:
若树为空,则空操作返回;否则 ⑴ 访问根结点;⑵ 按照从左到右的顺序前序遍历根结点的每一棵子树。
树的层序遍历:
从树的第一层(即根结点)开始,自上而下逐层遍历,在同一层中,按从左到右的顺序对结点逐个访问。
5.2 树的存储结构
5.3 二叉树的逻辑结构
1、 二叉树是n(n≥0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。
2、满二叉树:在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上。
特点:1.叶子只能出现在最下一层;2.只有度为0和度为2的结点。
3、完全二叉树:对一棵具有n个结点的二叉树按层序编号,如果编号为i(1≤i≤n)的结点与同样深度的满二叉树中编号为i的结点在二叉树中的位置完全相同。(1)如果i>1,则结点i的双亲结点的序号为 i/2;如果i=1,则结点i是根结点,无双亲结点。
(2)如果2i≤n,则结点i的左孩子的序号为2i;
如果2i>n,则结点i无左孩子。
(3)如果2i+1≤n,则结点i的右孩子的序号为2i+1;如果2i+1>n,则结点i无右孩子。
7、二叉树的遍历操作
若二叉树为空,则空操作返回;否则:
①访问根结点;
②前序遍历根结点的左子树;
③前序遍历根结点的右子树。5.4 二叉树的存储结构及实现
3.1 q=队列Q的队头元素出队;
3.2 访问结点q的数据域;
3.3 若结点q存在左孩子,则将左孩子指针入队;
3.4 若结点q存在右孩子,则将右孩子指针入队;
5.5 二叉树遍历的非递归算法
解决办法:在访问完该结点后,将该结点的指针保存在栈中,以便以后能通过它找到该结点的右子树。
5.6 树、森林与二叉树的转换
⑵去线——删去原二叉树中所有的双亲结点与右孩子结点的连线;
⑶层次调整——整理由⑴、⑵两步所得到的树或森林,使之层次分明。
3、叶子结点的权值:对叶子结点赋予的一个有意义的数值量。
4、二叉树的带权路径长度:设二叉树具有n个带权值的叶子结点,从根结点到各个叶子结点的路径长度与相应叶子结点权值的乘积之和。
5、哈夫曼树:给定一组具有确定权值的叶子结点,带权路径长度最小的二叉树。
6、哈夫曼树的特点:
(1) 权值越大的叶子结点越靠近根结点,而权值越小的叶子结点越远离根结点。
( 2) 只有度为0(叶子结点)和度为2(分支结点)的结点,不存在度为1的结点.
- 第五章 数和二叉树
- 第五章 数和二叉树
- 数据结构 第五章 数和二叉树
- 第五章 树和二叉树
- 第五章:树和二叉树
- 第五章 树和二叉树
- 第五章树和二叉树
- 数据结构 第五章 树和二叉树
- 数据结构 第五章 树和二叉树
- 数据结构 第五章 树和二叉树
- 数据结构 第五章 树和二叉树
- 数据结构 第五章 树和二叉树
- 数据结构 第五章 树和二叉树
- 数据结构 第五章 树和二叉树
- 第五章 树和二叉树
- 第五章 树和二叉树
- 第五章:树和二叉树
- 第五章 树和二叉树
- Microsoft SQL Server 2005 功能包
- Android声明和使用权限
- Java io详解
- cocos引擎的环境搭建
- Linux下SSH的安装和使用
- 第五章 数和二叉树
- myeclipse console窗口无法显示错误信息
- Android小知识4
- hdu 5124 lines (线段树+离散化)
- 一般物体检测--Binarized Normed Gradients for Objectness Estimation at 300fps
- UIday02
- 11.25Java基础入学
- 信号量_Semaphore与互斥_Mutex
- 第十四周项目六 阅读程序(7、8、9)