二叉树的分类以及树的分类

二叉树性质:

1.N=n0+n1+n2//从定义数

(从构造算术表达式来理解)叶子结点是参数,根节点是运算符特殊情况下

2.N=n1+2n2+1//从出度(线段)来数,或者说数孩子(规约来看)

1、2得--->n2+1=n0

计算二叉树位置一定要以1开始,层数默认1开始(不是记得最后结果矫正)h代表层数

A0=1    第一层最多只有一个根结点恒成立

二叉树最多多少结点---->a0(1-q^h)/(1-q)--->=2^h-1

二叉树的分类

1.一般树

2.只有左(右)孩子的树:(可改造的单链表)

3.哈夫曼树-应用:哈夫曼编码-权值和最小

按符合严格n叉树的结点数构造哈夫曼树,选取最小的n个值作为叶子结点并以此开始构造

最佳归并树(磁盘读取次数问题)=哈夫曼树

WPL:树的所有叶结点的带权路径长度之和,称为树的带权路径长度表示为WPL。

磁盘读取总次数=WPL*2

构造哈夫曼树有补0操作:补的个数为%(k-1)

应用:哈夫曼编码(可变长编码),与频数有关的哈夫曼树。

4.平衡二叉树

        4.1完全二叉树

                4.1.1堆

小根堆:根<左,右

败者树:顺序表存储,不仅是小根堆而且是严格二叉树。(当然也有胜者树,略)

败者树重构过程如下:

将新进入选择树的结点与其父结点进行比赛:将败者存放在父结点中;而胜者再与上一级的父结点比较。

比赛沿着到根结点的路径不断进行,直到ls[1]处。把败者存放在结点ls[1]中胜者存放在ls[0]中

K路平衡归并中:败者树也是严格二叉树,选最小的,败者树深度log(2,k)。

选择排序的一种变体。

大根堆:根>左,右

                4.1.2满二叉树

删除堆某结点操作相对比较特别。

5.二叉排序树(搜索,查找树)

有第一个结点决定树如何形状,左<根<右

二叉排序树(搜索树)结合了有序数组和链表的优点,在查找数据时的速度和使用了二分法的有序数组一样快,而且在增、删节点的速度也和链表一样。

挖个坑

红黑树 ---二叉搜索树

红黑树与AVL树的比较:
1.AVL树的时间复杂度虽然优于红黑树,但对现在的计算机,cpu太快,可以忽略性能差异 
2.红黑树的插入删除比AVL树更便于控制操作 
3.红黑树整体性能略优于AVL树(红黑树旋转情况少于AVL树)

红黑树的性质:
红黑树是一棵二叉搜索树,它在每个节点增加了一个存储位记录节点的颜色,可以是RED,也可以是BLACK;通过任意一条从根到叶子简单路径上颜色的约束,红黑树保证最长路径不超过最短路径二倍,因而近似平衡。

具体性质如下:

1.每个节点颜色不是黑色,就是红色,但根节点是黑色
2.如果一个节点是红色,那么它的两个子节点就是黑色的(没有连续的红节点
3.对于每个节点,从该节点到其后代叶节点的简单路径上,均包含相同数目的黑色节点。

特征:祖宗根必黑,允许黑连黑,不允许红连红;

操作:新增红色:1.爸叔都红就变色;2.爸叔黑就旋转,哪黑(叔)往哪旋。

6.线索二叉树(充分利用空指针的结果)

为了方便找先根、中根、后根遍历的直接前驱和直接后继,解决二叉树不能回溯的问题。

左指针一直找前驱直到空,即是开始,然后一直沿着右指针遍历。

7.严格二叉树

不存在度为1的结点,构造二叉树时,哈夫曼树是严格二叉树,但严格二叉树不一定是哈夫曼树。

严格n叉树,不存在度为1,...,n-1的结点。

二叉树到森林原则:左孩子,右兄弟

树的分类

1.n叉树

包含二叉树的类别

2.查找树

        2.1B-树(B树)

m阶B树:除根2子树,至少⌈ m/ 2 ⌉ − 1,至多有m-1个关键字

根结点至多有m棵子树,即至多有m-1个关键字

结点不是终端结点,则至少有2棵子树

除根以外的所有非叶结点至少有⌈ m/ 2 ⌉ 棵子树,即结点内至少含有⌈ m/ 2 ⌉ − 1 个关键字

特征:真值在所有节点中

分叉点左<该结点内最左值,该结点内最右值<分叉点右

叶子结点无指针链接

        2.2.B+树

特征:叶子结点中已经有了所有值

分叉点左<该结点内最左值,该结点内最右值=分叉点右

叶子结点指针链接

3.K路归并与K路平衡归并树

4.哈夫曼树(最佳归并树)

略(上面找)

5.并查集(类似双亲表示法的树组成的森林)

根结点唯一标识一个集合

存储:数组、链表、哈希表(散列表)均可

哈希表:按关键字索引

 

应用:OS的显式链接分配FAT(数组存储类并查集,区别记录后继,且成环)

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你的点赞我的光

我的第一次被打赏在哪?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值