为什么二叉树这么重要(面试必考)?

71 阅读1分钟

为什么二叉树这么重要,而不是三叉树、四叉树(二分法)

  • 数组:查找快,增删慢O(n)
  • 链表:查找慢,增删快O(1)
  • 二叉搜索树BST: 查找快,增删快---“木桶效应”

屏幕快照 2022-09-08 下午3.09.05.png 平衡二叉树

  1. BST如果不平衡,那就成链表了
  2. 所有要尽量平衡:平衡二叉搜索树BBST
  3. BBST增删查,时间复杂度都是n(logn),即树的高度

红黑树

一种自平衡二叉树 分为红、黑两种,通过颜色转换来维持树的平衡 相对于普通平衡二叉树,它维持平衡的效率更高

屏幕快照 2022-09-08 下午3.18.55.png

B树

  • 物理上是多叉树,但逻辑上是二叉树
  • 一般用于高效I/O,关系型数据库常用B树老组织数据

屏幕快照 2022-09-09 上午9.10.27.png

总结

  • 数组、链表,各有各的缺点;
  • 特定的二叉树可以让整体效果最优;
  • 各种高级二叉树,继续优化,满足不同场景;

堆栈模型

  • JS执行代码时
  • 值类型变量,存储在栈
  • 引用类型变量,存储在堆

  • 完全二叉树
  • 最大堆:父节点>=子节点
  • 最小堆:父节点<=子节点

屏幕快照 2022-09-09 上午9.17.57.png

逻辑结构VS物理结构

  • 堆,逻结构是一颗二叉树
  • 但它物理结构是一个数组
  • 数组:适合连续存储+节省空间

堆 VS BST

  • 查询比BST慢
  • 增删比BST快,维持平衡更快
  • 但整体的时间复杂度都在O(logn)级别,即树的高度