在.NET 4.0中是否有内置的二叉search树,还是需要从头开始构build这种抽象数据types? 编辑 这是专门针对二叉search树,而不是一般的抽象数据types“树”。
我试图find一个二叉search树的定义,我一直在find不同的定义。 有人说,对于任何给定的子树,左侧的子键小于或等于根。 有人说,对于任何给定的子树,正确的子键大于或等于根。 而我以前的大学数据结构书说:“每个元素都有一个关键,没有两个元素具有相同的关键”。 有没有bst的普遍定义? 特别是关于如何处理具有相同密钥的多个实例的树。 编辑:也许我不清楚,我看到的定义是 1)left <= root <right 2)左<root <=右 3)左<root <右,这样不存在重复的键。
我正在为我正在进行的一个项目build立一个符号表。 我想知道人们对各种可用于存储和创build符号表的方法的优缺点有何看法。 我已经做了一点search,最常见的是二叉树或链表或散列表。 以上所有的优点和缺点是什么? (使用C ++)
我需要在二叉search树中find第k个最小的元素,而不使用任何静态/全局variables。 如何有效地实现它? 我脑海中的解决scheme是在O(n)中进行操作,这是最坏的情况,因为我打算对整棵树进行遍历遍历。 但内心深处,我觉得我不在这里使用BST财产。 我的假设解决scheme是否正确或有更好的解决scheme吗?
堆和BST有什么区别? 何时使用堆以及何时使用BST? 如果你想以sorting的方式获取元素,BST是否比堆更好?
List是二叉树的叶节点值的列表,我想弄清楚如何输出。 这是给我所有的节点,但我只需要叶子。 lea(nil,[]). lea(t(X,L,R),[X|L]) :- lea(L,L1), lea(R,L2), append(L1,L2,L). 运行这个给我: ?- lea(t(a,t(b,t(d,nil,nil),t(e,nil,nil)),t(c,nil,t(f,t(g,nil,nil),nil))), List). List = [a, b, d, e, c, f, g] 但是我需要 List = [d, e,g] 可能吗。