【数据结构】树形数据结构知识点总结

一、二叉树

  • 非空二叉树的第i层,最多有2^{i-1}个节点
  • 在高度为 h 的二叉树上最多有 2^{h-1}个结点
  • 对于任何一棵非空二叉树,如果叶子节点个数为 n0,度为 2 的节点个数为 n2,则有: n0 = n2 + 1 (利用边与节点数计算)
  • 真二叉树:所有节点的度都要么为 0,要么为 2
  • 满二叉树:最后一层节点的度都为 0,其他节点的度都为 2
  • 完全二叉树:对节点从上至下、左至右开始编号,其所有编号都能与相同高度的满二叉树中的编号对应

二、二叉搜索树

  • 任意一个节点的值都大于其左子树所有节点的值
  • 任意一个节点的值都小于其右子树所有节点的值
  • 它的左右子树也是一棵二叉搜索树
  • 二叉搜索树存储的元素必须具备可比较性


三、平衡二叉搜索树


1.  AVL树:每个节点的左右子树高度差不超过 1

  • LL – 右旋转(单旋)(g.left = p.right;p.right = g)
  • RR – 左旋转(单旋)(g.right = p.left;p.left = g)

2. B树:B树是一种平衡的多路搜索树,多用于文件系统、数据库的实现

  • 1 个节点可以存储超过 2 个元素、可以拥有超过 2 个子节点
  • 平衡,每个节点的所有子树高度一致


3. 红黑树:相比AVL树,红黑树的平衡标准比较宽松: 没有一条路径会大于其他路径的2倍,是一种弱平衡、黑高度平衡红黑树的最大高度是 2 ∗ log2(n + 1) ,依然是 O(logn) 级别

  • 节点是 RED 或者 BLACK
  • 根节点是 BLACK
  • 叶子节点(外部节点,空节点)都是 BLACK
  • RED 节点的子节点都是 BLACK(a, RED 节点的 parent 都是 BLACK; b, 从根节点到叶子节点的所有路径上不能有 2 个连续的 RED 节点)
  • 从任一节点到叶子节点的所有路径都包含相同数目的 BLACK 节点

AVL树 vs 红黑树
◼ AVL树

  • 平衡标准比较严格: 每个左右子树的高度差不超过1
  • 最大高度是 1.44 ∗ log2 n + 2 - 1.328(100W个节点, AVL树最大树高28)
  • 搜索、添加、删除都是 O(logn) 复杂度,其中添加仅需 O(1) 次旋转调整、删除最多需要 O(logn) 次旋转调整

◼ 红黑树

  • 平衡标准比较宽松: 没有一条路径会大于其他路径的2倍
  • 最大高度是 2 ∗ log2(n + 1)(100W个节点,红黑树最大树高40)
  • 搜索、添加、删除都是 O(logn) 复杂度,其中添加、删除都仅需 O(1) 次旋转调整

◼ 搜索的次数远远大于插入和删除,选择AVL树;搜索、插入、删除次数几乎差不多,选择红黑树
◼ 相对于AVL树来说,红黑树牺牲了部分平衡性以换取插入/删除操作时少量的旋转操作,整体来说性能要优于AVL树
◼ 红黑树的平均统计性能优于AVL树,实际应用中更多选择使用红黑树
 

 

B树与B+树

B树与B+树简明扼要的区别

 

4. 二叉堆:二叉堆的逻辑结构就是一棵完全二叉树,所以也叫完全二叉堆

二叉堆详解实现优先级队列

堆排序详解


5. 哈夫曼树

  • (1),以需要编码字符出现次数为权值,将这些权值作为根节点构建 n 棵二叉树,组成森林
  • (2),在森林中选出 2 个根节点最小的树合并,作为一棵新树的左右子树,且新树的根节点为其左右子树根节点之和
  • (3),从森林中删除刚才选取的 2 棵树,并将新树加入森林
  • (4),重复 2、 3 步骤,直到森林只剩一棵树为止,该树即为哈夫曼树

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值