我想知道二叉树的具体应用是什么。你能举几个例子吗?
当前回答
主要应用是二叉搜索树。这是一种数据结构,其中搜索、插入和删除都非常快(大约log(n)次操作)
其他回答
摩尔斯电码的结构是二叉树。
我认为“纯”二叉树没有任何用处。(教育用途除外) 平衡二叉树,如红黑树或AVL树更有用,因为它们保证O(logn)运算。普通的二叉树最终可能是一个列表(或几乎是列表),在使用大量数据的应用程序中并没有真正的用处。
平衡树通常用于实现映射或集合。 它们也可以用于O(nlogn)排序,即使存在更好的方法。
也可以用于搜索/插入/删除哈希表,它通常比二叉搜索树(平衡与否)有更好的性能。
在需要搜索/插入/删除和排序的应用程序中,(平衡的)二叉搜索树将是有用的。排序可以在适当的位置(几乎,忽略递归所需的堆栈空间),给定一个就绪的构建平衡树。它仍然是O(nlogn),但有一个更小的常数因子,不需要额外的空间(除了新的数组,假设数据必须放入数组中)。另一方面,哈希表不能排序(至少不能直接排序)。
也许它们在一些复杂的算法中也很有用,但说实话,我什么也想不起来。如果我发现更多,我会编辑我的帖子。
其他树如f.e.b +树也广泛应用于数据库中
关于二叉树,还有一个有趣的例子没有提到,那就是递归求值的数学表达式。从实际的角度来看,它基本上是无用的,但它是一种有趣的方式来考虑这样的表达式。
基本上,树的每个节点都有一个值,这个值要么是自身固有的,要么是通过对其子节点的值进行操作来递归计算的。
例如,表达式(1+3)*2可以表示为:
*
/ \
+ 2
/ \
1 3
为了求表达式的值,我们要求父元素的值。这个节点又从它的子节点,一个加号运算符和一个只包含“2”的节点中获取它的值。加号运算符依次从值为“1”和“3”的子运算符中获取其值,并将它们相加,将4返回给返回8的乘法节点。
这种二叉树的使用在某种意义上类似于反向抛光表示法,因为执行操作的顺序是相同的。还有一点需要注意的是,它不一定是二叉树,只是最常用的操作符是二叉的。在最基本的层次上,这里的二叉树实际上只是一种非常简单的纯函数式编程语言。
BST是一种二叉树,在Unix内核中用于管理一组虚拟内存区域(vma)。
你的程序语法,或者其他很多东西,比如自然语言,都可以用二叉树来解析(虽然不一定)。