【数据结构】树形结构:二叉树&树

深度(高度):层数

满二叉树:深度k上不能再添加叶结点

完全二叉树:深度k上,第k层只删除右边的叶结点

不完全二叉树:深度k上,第k层删除了左边的叶结点

排序二叉树:左根右的数值从小到大,且不重复

最优二叉树(哈夫曼树):结点的度不为1,带权(一般右子树带权)的路径长度最短。


二叉树的顺序存储:采用虚拟结点补全成完全二叉树,再从上到下、从左到右标识下标值,存入一块内存。(这种存储方式浪费空间)


二叉树常用两种链式存储结构:二叉链表、三叉链表(三叉链表中的结点比二叉链表多了一个指向双亲的指针域)。


二叉链表的递归遍历:

先序遍历:根左右

中序遍历:左根右

后序遍历:左右根


层序遍历:按层从上到下、从左到右

利用遍历可以实现许多运算,如求树的高度。


二叉链表的非递归遍历(栈):1、指针指向左孩子;2、取栈顶元素;3、出栈;4、指向右孩子【循环1-4,到指针或栈为空】




树有三种链式存储结构:1、孩子链表;2、孩子兄弟链表;3、双亲表


树转换为二叉树:1)保留第一个结点与父结点的链接,其他兄弟结点断开;2)兄弟结点连接。

森林转换为二叉树:1)每棵树转换为二叉树;2)转换成的二叉树的根节点看为兄弟结点连接。



构造哈夫曼树:1、结点按权排成一排;2、权值最小的合成新二叉树,其根结点的值为子结点权之和;3、将新结点与剩余结点比对,最小的合成……(以此类推,直至剩一棵树)

哈夫曼树来源于判定树,利用子结点权重不同,使权重小的被比较的次数最小,则权重大的离根结点越近。



评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值