二进制搜索树和线程二叉树之间有什么区别?

时间:2015-03-31 06:22:36

标签: algorithm

我的意思是二元搜索树是一个树,其中左边的孩子比父母更小,右边的孩子比父母更大/更等。

线程二叉树有线程。这有什么不同?

5 个答案:

答案 0 :(得分:5)

在线程二叉树中,具有空引用的叶子将替换为对有序后继(对于右子)或前驱(对于左子节点)节点的引用。如果仅使用后继引用或前驱引用,则树是单线程,如果两者都是,那么它是双线程。 这使得节点的有序遍历在计算上更便宜。

这张图片(借鉴Wikipedia)很好地展示了数据结构:

enter image description here

有关详细信息,请参阅Wikipedia article

答案 1 :(得分:2)

比较这两个概念有点像比较苹果和水牛。 :)二叉搜索树是二叉搜索树的特例,其中元素满足您提到的顺序 - 左子树中的所有内容必须小于根节点,右子树中的所有内容都必须更大。线程树没有任何此类限制,事实上,线程树不必在节点中具有可与排序关系进行比较的数据。实际上,二叉搜索树是一个概念,它与树的实现方式没有任何关系,而一个线程树只是 关于树的实现方式 - 即。如何在树节点中设置指针。如果您决定以这种方式实现它,则二叉搜索树可以是线程树。

答案 2 :(得分:1)

这里thread并不意味着另一个并行执行堆栈。它表示指向树的每个节点的下一个和前一个元素的指针。

请参阅Wikipedia上的说明。

答案 3 :(得分:1)

Wiki说"二进制树通过使所有正确的子指针(通常为空指向节点的顺序继承者(如果存在))和所有左子指针来进行线程化。通常为null指向节点的前序。"

您通常会这样做,因此您可以快速找到节点的顺序后继节点(给定节点)而不是遍历,直到每次遍历主节点和维护后继节点时。

虽然您适合使用二叉搜索树,但左侧的节点将小于父节点,而右侧的节点将大于父节点。

答案 4 :(得分:1)

Threaded Binary Tree Article in Wikipedia

"二进制树通过使所有正确的子指针(通常为null)指向节点的inorder后继(如果存在),并且通常为null的所有左子指针指向inorder先前的节点。"

相关问题