【发布时间】:2013-09-15 19:22:25
【问题描述】:
二叉树。原理是可以理解的,但是从数组或关联数组的角度来看,它们到底是什么样子的呢?
如果我可以使用的数据结构是:
AssociativeArray={tag:value,tag:value,tag:value}
(of course, each tag is unique)
和
Array=[value,value,value]
(where the value can be any data type including array)
例子:
DictOfWords={greeting:"hello",sound:"music",sleep:"dream",words:["hello","music","dream"]}
listOfWords=["hello","music","dream",DictOfWords]
由其中一个或两个构建的二叉树会是什么样子?
此外,根据这些数据结构构建的单词搜索 trie 的数据结构是什么样的?
trie 的节点会是什么样子?它是关联阵列还是线性阵列或两者的某种组合?我理解from this post“一个树每个字符拥有一个节点”
顶层结构也应该是这样的:
trie={a:{},b:{},c:{}...}
或
trie={a:[],b:[],c:{}...}
或
trie=["a","b","c"...]
【问题讨论】:
-
你能去维基百科看看en.wikipedia.org/wiki/Binary_tree和en.wikipedia.org/wiki/Trie。如果这些不能回答你的问题,请回来在这里发表评论,我会帮助你理解它们。
-
这正是我在回到 S/O 并发布此问题之前所做的!
-
我想是什么让我感到困惑,那么,为什么你想用关联数组或数组来表达它们。关联数组和数组不是考虑二叉树的常用方法。事实上,我只听说过它在一种情况下使用这种方式(这是一种花哨的优化)。同时,Trie 页面提供了几个用各种语言有效地从关联数组构建的示例。 Dukeling 的回答说明了这个问题:您可以发明任何您喜欢的表示,但用于理解的有用表示不涉及数组或关联数组。
-
尝试用不同的方式表达这种说法:有很多方法可以将二叉树的内容表示为数组或关联数组。但是,在二叉树上完成的所有操作都没有真正使用数组函数,并且如果您选择将平衡二叉树视为数组,则在平衡二叉树上完成的一些操作是无法实现的。
-
我只需要处理这两种类型的数组。我不知道可以使用其他什么内置数据类型——字符串、整数、长整数、浮点数、双精度、数组、关联数组,仅此而已。看不到任何人如何在不使用数组和某种数组索引的情况下遍历任何内容的列表
标签: binary-tree trie