Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 三元搜索树的平衡_Algorithm_Ternary Tree_Ternary Search Tree - Fatal编程技术网

Algorithm 三元搜索树的平衡

Algorithm 三元搜索树的平衡,algorithm,ternary-tree,ternary-search-tree,Algorithm,Ternary Tree,Ternary Search Tree,如何“平衡”三元搜索树?大多数tst实现不解决平衡问题,但建议以最佳顺序插入(我无法控制)。二元搜索树的一个推广是,它适用于2及以上的扇出。这不是唯一的方法,但这是一种常见的方法 它的大致工作方式是,如果插入或删除会使树失去平衡,它会从相邻节点窃取元素或空间。如果这还不足以保持树的平衡,那么它的高度将被改变以腾出空间。Dobbs博士关于的文章说:D.D.Sleator和R.E.Tarjan在“自调整二元搜索树”(ACM杂志,1985年7月)中描述了三元搜索树的理论平衡算法。您可以通过最喜爱的搜索

如何“平衡”三元搜索树?大多数tst实现不解决平衡问题,但建议以最佳顺序插入(我无法控制)。

二元搜索树的一个推广是,它适用于2及以上的扇出。这不是唯一的方法,但这是一种常见的方法


它的大致工作方式是,如果插入或删除会使树失去平衡,它会从相邻节点窃取元素或空间。如果这还不足以保持树的平衡,那么它的高度将被改变以腾出空间。

Dobbs博士关于的文章说:D.D.Sleator和R.E.Tarjan在“自调整二元搜索树”(ACM杂志,1985年7月)中描述了三元搜索树的理论平衡算法。您可以通过最喜爱的搜索引擎找到本文的在线版本。

阅读本文:

“使用条件旋转和随机启发法自动调整三元搜索尝试” 通过 “加达·哈尼·巴德∗ 和B.John Oommen†”


它将帮助您了解自我调整和平衡TST。

一个简单的优化是将其变成一棵红黑树,这样可以避免一些最坏的情况。TST实际上只是二叉树,其中给定节点的值是另一个TST。因此,节点的“中间”子节点并不是在每个级别上都处于平衡状态的树的一部分,因为它无论如何都不能移动到不同的父节点


这确保了在日志(R)时间内遍历trie的每一层,尽管考虑到每个节点上的子项的大小可能会做得更好。但这看起来要复杂得多

搜索树有多大?有几千个单词,从4到20个字符不等。不确定这是大还是小,但对我来说是大。听起来像是当树到达某个点时扔掉它,然后用一棵用“最佳顺序”构建的树替换它,这是你最好的选择-应该需要几毫秒,如果你能抽出时间的话。我想知道重新平衡是否是一个简单的过程,比如将一个节点更改为它的lo子节点和所有lo子节点的中间元素,它本身,hi子节点和所有hi子节点。OP讨论了三元搜索树。我一点也不清楚1-2B树与三元树的区别。你能给我解释一下吗?B-树(通常)在节点中包含完整的键。在三元搜索树中,键由节点路径定义。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-注意(浏览完本文后):建议的方法(splaying)即使在只读操作期间也会重新平衡树,因此可能不适合多线程访问。