我了解二叉树的结构以及如何遍历它们。但是,我正在努力实现它们在程序和编程中的实际用途,目的。当我想到分层数据的“现实生活”示例时,几乎可以肯定他们有两个以上的子级。例如,在家谱中,一位母亲可能经常有两个以上的孩子。
由于对数组和列表的处理速度更快,“二叉树”真的只对存储线性相关的数据有用吗?或者,它们在存储分层数据中是否有特定目的?如果是这样,那么二叉树的应用实例有哪些。一个节点最多有两个孩子的数据是什么?
我了解二叉树的结构以及如何遍历它们。但是,我正在努力实现它们在程序和编程中的实际用途,目的。当我想到分层数据的“现实生活”示例时,几乎可以肯定他们有两个以上的子级。例如,在家谱中,一位母亲可能经常有两个以上的孩子。
由于对数组和列表的处理速度更快,“二叉树”真的只对存储线性相关的数据有用吗?或者,它们在存储分层数据中是否有特定目的?如果是这样,那么二叉树的应用实例有哪些。一个节点最多有两个孩子的数据是什么?
Answers:
不,二进制树不能用于您所考虑的层次结构数据。n元树的主要用例n
是固定数量的快速搜索功能,而不是语义层次结构。
请记住,在旧游戏中,一个人想到一个1到100之间的数字,而另一个人则必须尽可能少地猜测它,如果您猜错了,那么想到这个数字的人就必须告诉您您是否也是如此高还是低?一段时间后,它会变得无聊,因为您很快就知道应该始终从50开始,然后转到25或75,然后在每次新的猜测之后将要搜索的范围划分为一半,最终您可以猜测任何数字最多保证有7个猜测。
它可能不会使游戏变得有趣,但是该属性正是使二叉树(以及其他n叉树)有用的原因:您可以使用它们在非常短的时间内搜索很大的数据集。
可以使用二叉树来实现任何树结构,其中一个节点可以有无限数量的子级。
对于树中的每个节点,将其替换为带有左右指针的节点。左指针指向该节点的第一个孩子。右节点转到该节点的下一个兄弟节点。给定节点的所有子节点都在一个链接列表中,并由其右指针连接,列表的头部由其父节点的左指针指向。
您复杂的n元树已变成简单的二叉树。
我确定这是在Knuth,Vol。1个地方。
二叉树为什么要使用它们?
在编程中,您需要处理大量相同类型的数据。
存储此数据的两种基本方法是:链表和数组。
它们都有缺点:在链接列表中,可以轻松地在任何位置添加元素或删除元素。但是,访问特定元素比较困难,因为您必须遍历列表,直到找到所需的元素为止。
使用数组访问特定元素很容易,但是插入或删除元素比较困难,因为插入的方式是:将数组扩展1,将插入位置1之前的所有元素向右移动,然后插入元素。
因此,链表和数组都有缺点。
二进制树可以解决数组和链表的两个问题:
因此,当您有大量定期更改的数据时,就会生成二叉树。