📜  树数据结构的应用

📅  最后修改于: 2022-05-13 01:57:18.961000             🧑  作者: Mango

树数据结构的应用

为什么是树?
与线性数据结构的数组和链表不同,树是分层(或非线性)数据结构。

  1. 使用树的一个原因可能是因为您想要存储自然形成层次结构的信息。例如计算机上的文件系统:

    文件系统
    —————

/   <-- root
  /      \
...        home
      /          \
   ugrad        course
    /          /    |    \
  ...        cs101 cs112 cs113
  1. 如果我们以树的形式组织键(具有某种排序,例如 BST),我们可以在适当的时间内搜索给定的键(比链表快,比数组慢)。像 AVL 和红黑树这样的自平衡搜索树保证了 O(Logn) 的搜索上限。
  2. 我们可以在适当的时间内插入/删除键(比数组快,比无序链表慢)。像 AVL 和红黑树这样的自平衡搜索树保证了插入/删除的 O(Logn) 上限。
  3. 与链接列表和数组不同,树的指针实现对节点数量没有上限,因为节点使用指针链接。

其他应用:

  1. 存储分层数据,如文件夹结构、组织结构、XML/HTML 数据。
  2. 二叉搜索树是一种允许对已排序数据进行快速搜索、插入、删除的树。它还允许找到最近的项目
  3. 堆是一种使用数组实现的树数据结构,用于实现优先级队列。
  4. B-Tree 和 B+ Tree :它们用于在数据库中实现索引。
  5. 语法树:编译器设计中的扫描、解析、代码生成和算术表达式评估。
  6. KD树:一种空间划分树,用于组织K维空间中的点。
  7. Trie :用于实现带有前缀查找的字典。
  8. 后缀树:用于在固定文本中进行快速模式搜索。
  9. 生成树和最短路径树分别用于计算机网络中的路由器和网桥
  10. 作为合成数字图像以获得视觉效果的工作流程。
  11. 决策树。
  12. 大型组织的组织结构图。

参考:
http://www.cs.bu.edu/teaching/c/tree/binary/
http://en.wikipedia.org/wiki/Tree_%28data_structure%29#Common_uses