树
逻辑表示方法
树形表示法
文氏图表示法
凹入表示法
括号表示法
性质
树的结点数等于所有结点的度加一
度为m的树中第i层最多有m的(i-1)次方个结点
高度为h的m次树最多的节点数(等比数列公式求和)
具有n个结点的m次树的最小高度
树的遍历
先根遍历
后根遍历
层次遍历
存储结构
双亲存储结构
存放数据元素和双亲的位置
孩子链存储结构
存放数据元素和指向所有孩子结点的指针
孩子兄弟链存储结构
一个数据域,一个最左的孩子(长子)和下一个兄弟结点的指针域
二叉树
二叉树与度为2的树
度为2的树要求必须包含一个度为2的结点,而二叉树不需要
度为2的树不区分左右子树,而二叉树严格区分
性质
非空二叉树的叶子节点数等于双分支节点数加1
其他性质
二叉树和树、森林的转换
存储结构
顺序存储结构
只能存储完全二叉树或满二叉树,对于一般二叉树,可以化为完全二叉树或满二叉树
结点编号为i,则双亲为i/2的向下取整,左孩子为2i,右孩子为2i+1
优点
查找一个结点的双亲结点和孩子结点方便
缺点
二叉树的插入和删除操作不方便
链式存储结构
二叉树的遍历
先序遍历
中序遍历
后序遍历
层次遍历
二叉树的构造
已知中序序列和先序序列
已知中序序列和后序序列
线索化二叉树
先序线索二叉树
后序线索二叉树
中序线索二叉树
哈夫曼树
给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树
定理:对于具有n个叶子结点的哈夫曼树,一共有2n-1个结点
哈夫曼编码
编码:将文字转为二进制字符串
左分支为0,右分支为1
实质:使频率越高的字符采用越短的编码
在一组编码中,任一字符的编码不可能使其他字符编码的前缀
实现代码
数据结构与算法: 记录学习笔记,包括代码和思维导图