树结构

二叉树:二叉树是每个节点最多有两个子树的树结构。

满二叉树:一棵深度为K且有2^k-1个结点的二叉树称为满二叉树。

完全二叉树:每个结点与其对应深度的满二叉树一一对应。

二叉排序树:或者是一棵空树,或者是具有下列性质的二叉树:
A. 左子树若不为空,则左子树上所有节点的值均小于它的根结点值;
B. 右它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
C. 它的左、右子树也分别是二叉排序树;

平衡二叉树:又称AVL树,或者是一棵空树,或者是具有下列性质的二叉树:
A. 它的左右子树都是平衡二叉树,且左右子树深度差不超过1;

红黑树:自平衡二叉查找树,典型的用途是实现关联数组。它的特性保证了,最长路径长度不会是最短路径长度的2倍。
特性:
1. 节点是红色或黑色。
2. 根节点是黑色。
3. 每个叶节点(NIL节点,空节点)是黑色的。
4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。

Trie树:字符索引,字典树
桶状哈希表与直接定址表
Trie树详解及其应用
字典树(Trie树)的C程序实现代码
Trie树的常见应用大总结(面试+附代码实现)

B-树:又称B树,B-树是一种平衡的多路查找树,它在文件系统中很有用。
一棵m阶的B-树,或为空树,或为满足下列特性的m叉树:
A. 树中每个结点至多有m棵子树;
B. 若根结点不为叶子结点,则至少有两棵子树;
C. 除根之外的所有非终端结点至少有[ m/2 ]棵子树;
D. 所有非终结点包含这样的信息:(n, A0, K1, A1, K2, A2, … Kn, An..);
E. 所有叶子结点都出现在同一层次上,表示为空。

B+树:B+树是应文件系统所需而出的一种B-树的变形树,一棵m阶的B+树和m阶的B-树差异在于:
A: 有n个关键字的结点拥有n棵子树。(B-树中n个关键字有n+1棵子树);
C: 非终节点关键字可看作是索引部分,是对应子树中关键字的最大或最小值;
B: 所有的叶子结点中包含了全部关键字信息,及指向这些关键字记录的指针,且叶子结点中关键字按从小到大链接;

最优二叉树(赫夫曼树)
解决了带权值的的最短花费问题。
赫夫曼编码(前缀编码):编码对象长度不一样,实现最短编码方案。原理是保证了每一种对象编码都不会是其它对象编码的前缀。



树的遍历方式:
树:树先根遍历、后根遍历
例:(先)A B C D E、(后)B D C E A
____A
B___C___E
____D

森林:先序、中序(其实就是每棵树的后根遍历)

二叉树:先、中、后序

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值