我最近看过几本书,已经看到了二进制树和二进制搜索,但是由于我仍在计算机科学学习的初期,所以我还没有上过真正涉及算法和数据的类(class)。结构严重。

我检查了典型的资源(维基百科,谷歌),以及大多数关于(特别是)红黑树的有用性和实现的描述,因为它们密集且难以理解。我敢肯定,对于具有必要背景的人来说,这是很有意义的,但是目前,它几乎像是一门外语。

那么,什么使二进制树在编程时发现自己要执行的一些常见任务中有用呢?除此之外,您更喜欢使用哪些树(请提供示例实现),为什么?

最佳答案

红黑树非常适合创建平衡的树。二进制搜索树的主要问题是,您可以非常轻松地使其不平衡。想象您的第一个数字是15。然后所有的数字都逐渐小于15。您将有一棵树,左侧非常沉重,而右侧没有任何东西。

红黑树通过在插入或删除时强制平衡树来解决此问题。它通过在祖先节点和子节点之间进行一系列旋转来实现此目的。该算法实际上很简单,尽管它有点长。我建议拿起CLRS(Cormen,Lieserson,Rivest和Stein)教科书,“算法简介”,并阅读RB树。

该实现也不是那么短,所以可能最好不要在此处包含它。但是,树广泛用于需要访问大量数据的高性能应用程序。它们提供了一种查找节点的非常有效的方式,而插入/删除的开销却相对较小。再次,我建议您查看CLRS,以了解其用法。

虽然可能没有明确使用BST,但是几乎在每个现代RDBMS中,通常都会使用树的一个示例。同样,您的文件系统几乎可以肯定地表示为某种树结构,并且文件也以这种方式进行索引。树木为Google提供动力。树木几乎为互联网上的每个网站提供动力。

10-02 09:37