binary-search-tree相关内容

从二叉查找树递归除去

这是功课;请不要随便给我code 我有两种方法:删除(T数据)和 removeRec(节点< T>节点,T数据)。 在当前状态下,看来我的code只删除根的BST的节点。 @覆盖 公共t取出(T数据){ 如果(数据== NULL){ 抛出新抛出:IllegalArgumentException(“数据为空”); } 如果(根== NULL ..
发布时间:2015-11-30 20:39:46 Java开发

采用集和二叉搜索树解析和建筑S-防爆pressions

这是伪作业(这是额外的学分)。我有一个BST它是一个指向包含字线(存储在别处)字样的索引。我需要实现的方式使用S-EX pressions这样我就可以结合搜索和(安培)。和或(|) 在命令提示符下用户可以键入类似: 查询((((火)及(林))|((海洋)及(船)))及(水)) 从本质上讲,应该返回包含单词消防,森林和水,以及包含海洋,舟和水的所有行的所有行。 我真正需要帮助的逻辑分析和节点 ..
发布时间:2015-11-30 20:37:06 C/C++

插入N个数字到二叉搜索树的复杂性

我有一个问题,它说:“计算紧迫的时间复杂度为插入n个数为二进制搜索树的过程”。它并不表示这是否是一个平衡的树或没有。那么,什么答案可以给这样的问题?如果这是一个平衡树,那么高度LOGN,并插入n个数需要O(nlogn)的时间。但是,这是不平衡的,它可能需要甚至为O(n 2 )在最坏情况下的时间。这是什么意思找到插入n个数为BST的紧迫的时间复杂度?我失去了一些东西?谢谢 解决方案 这可能是为O ..

对于二叉搜索树删除程序

考虑在BST删除过程中,当删除节点有两个孩子。比方说,我总是将其与节点持有其右子树的最小密钥进行更换。 现在的问题是:这是程序交换?也就是说,删除x和然后y具有相同的结果不是删除第一y和则x? 我想答案是否定的,但我不能找到一个反例,也没有找出任何合法的理由。 编辑: 也许我得再清楚不过了。 考虑移植(节点X,节点Y)程序:它代替x与Y(和它的子树)。 所以,如果我想删除一个节点(例如x ..
发布时间:2015-11-30 16:32:34 C/C++

平衡二叉搜索树,存储数据只在叶

我买了一个可爱的小本关于几何计算,虽然这里阅读它,在那里我经常绊倒在使用这些特殊的二叉搜索树。这些树是平衡的,应当存放只在假期节点的数据,内部节点只能存储值向下引导搜索的叶子。 图片显示了一个例子树,其中叶子是矩形和内部节点是圆 我有两个问题有关: 什么是不存储数据的内部节点的优势在哪里? 对于学习的目的,我想实现这样的树,所以我想这可能是使用AVL树的基础是一个好主意,但果真如此吗? ..
发布时间:2015-11-30 16:31:50 C/C++

找到共同的祖先中的二进制树

这个问题是问我在接受采访时:我有一个二叉树,我必须找到考虑到树的两个随机节点的共同祖先(父)。我还给出一个指向根节点 我的回答是: 分别遍历树的两个节点,直到你达到了预期的节点。 平行在遍历存储元件与下一个地址中一个链表。然后,我们有我们两个人链表。因此,尝试比较这两个链接列表,并在这两个链接列表的最后一个公共节点父。 我在想,这个解决方案是正确的,纠正我,如果我错了。 如果此解决方案是正确 ..
发布时间:2015-11-30 16:30:51 C/C++

两个二叉搜索树均等的无序阵列构建

鉴于大小的两个未排序数组N分别,我们要确定二叉搜索树构建从他们的将是等于或不。 因此​​,阵列的元素被拾取并插入一个基本(没有平衡,无红黑色,什么都没有)二叉搜索树。 直接给出两个数组,我们可以判断它们是否会引起同一个二叉搜索树。 有一个明显的O(N 2 )最坏情况下的时间复杂度的解决方案:构建两棵树,并比较他们的平等。 是否有一个O(N)或O(N日志N)的解决办法? 这我试图提取问题的想 ..
发布时间:2015-11-30 16:28:04 C/C++

最好的数据结构/算法插入/删除/等级/ SELECT查询

到目前为止,我知道,自我平衡的BST像AVL树和红黑树可以在O(log n)的时间执行这些操作。 但是,要使用这些结构,我们必须实现AVL树或RB树自己。 我听说有一个算法/实现这四个操作,而无需使用自动平衡BST。 用我们自己定义的结构,我们需要写那么多行。不过,我听说有在不到100线$​​ C $ C支持这四大运营商的可能性:\ 难道你们对这个应该怎么做任何想法? 除了BST,还有没 ..
发布时间:2015-11-30 16:23:54 C/C++

平衡一个BST

参考: 有人问我这个问题@MS SDE采访时,第3轮。而且这不是一个家庭作业的问题。我也给它一个思想和提我下面的方法。 问: 修改的BST,使之成为尽可能均衡。不用说,你应该这样做尽可能高效。 提示: 记者说,这是一个合乎逻辑的问题,如果你有不同的想法,你会得到答案。没有复杂的编码参与。 - >说了这么多,我不认为他是希望我指向AVL / RB树 我的解决方法: 我建议,我会做序树的遍历, ..
发布时间:2015-11-30 16:17:16 C/C++

二叉搜索树数超过n个不同元素

有多少二叉搜索树可以从n个不同元素构成?我们怎样才能找到一个数学证明的公式呢? 示例: 如果我们有3个不同的元素,比如1,2,3, 5二叉搜索树。 // EN:解决方案 给定的n个元素,可以从这些元素制成二进制搜索树的数量是由第n个 直观地,Catalan数重新present的方法可以创建一个结构出,其由以下述方式n个元素的数目: 排列元素为1,2,3,...,N。 在挑选这些元素作 ..
发布时间:2015-11-30 16:13:33 C/C++

你有多少种方法可以将一系列值成BST,形成一个特定的树?

这个前面的问题问有多少种方法有插入值1 - 7成二叉搜索树,会导致下面的树: 4 / \ 2 6 / \ / \ 1 3 5 7 (答案是80,的方式)。 假设更普遍,你给出一个任意BST拿着一些设定值,并想知道有多少可能的方法有,将这些值转换,将最终产生结果树一个BST。是否有一个有效的算法来确定呢? 谢谢! 解决方案 我们可以用一个巧妙的递归 ..
发布时间:2015-11-30 16:07:42 C/C++

如何二叉树转换为二进制搜索树就地,即,我们不能使用任何额外的空间

如何将二叉树转换成二叉搜索树就地,也就是说,我们不能使用任何额外的空间。 解决方案 您不会过多去,但如果需求是什么,我觉得是,你有一个二叉树已经创建并坐在内存,但没有排序。(你想让它进行排序,反正路) 我假设这棵树结的样子 结构tree_node { 结构tree_node *离开; 结构tree_node *权利; data_t数据; }; 我也假设你可以 ..
发布时间:2015-11-30 16:00:20 C/C++

发现增加的子序列的数目

我想找到一个数组中增加子的数目,我碰到一个二进制索引树,为我们提供了 O(log n)的解决方案。 我不明白用于位在code: 无效MADD(INT和放大器; A,INT B) { A + = B; } //芬威克code 无效更新(INT I,INT X) { 为(++我;我< MAX_N; I + = I和-i)MADD(英尺[我],X); } INT查询(int ..
发布时间:2015-11-30 15:48:42 C/C++开发

二叉树的第一共同祖先

我有一个疑问,如果我有这样的二叉搜索树那么这将是节点6和1 致谢最低的共同祖先 解决方案 按照 最低的共同祖先(LCA)是图论的一个概念和 计算机科学。设T是有n个节点的根树。最低的 共同祖先之间两个节点v和w定义为最低的 同时具有V和W的后代(在这里我们允许节点节点T中 是其自身的后代)。 所以,是根据这个定义去正确的答案应该是 6 。如果这是一个面试问题将是很好事先与面试官澄清。 ..
发布时间:2015-11-30 15:26:32 C/C++

我怎么能证明这工作在二叉搜索树?

我要你给我一个提示,以证明这项工作从Cormen的书: “证明,无论什么节点,我们开始在一个高度小时二叉搜索树,K 连续调用树后继需要O(K + H)的时间。“ 解决方案 让 X 是起始节点和以Z 是后结束节点 K 连续调用树的继任者。 让 P 介于的简单路径X 和以Z 的包容性。 让是是的共同祖先X 和以Z 的 P 探访。 P 的长度最多为 2小时,这是 0(H) 。 让输出是元素,它们的值 ..
发布时间:2015-11-30 15:13:04 C/C++

BST的输入可能的排列

我给出一个字符串,即“CPHBDZ”。通过将(按顺序)的信件到BST我将有: Ç / \ 乙P / \ 赫兹 / ð 如果我们改变秩序的字符串为“CBPHDZ”我们会得到相同的树。 我必须找到并列出提供相同的BST输入字符串的所有排列。我想出了如何计算一个数字的排列组合,但我想不出任何算法实际上找到它们。 解决方案 假设你没有做任何旋转(等)来平衡树,可以从树的结构得到 ..
发布时间:2015-11-30 15:11:44 C/C++

在O(n)时间转换堆到BST?

我想我知道答案,最小的复杂性是 O(nlogn) 但有什么办法,我可以从堆的二叉搜索树中的 O(N)的复杂性? 解决方案 没有算法从堆为O建设BST(n)的时间。这样做的原因是,给定n个元素,你可以从他们的O(n)的时间建立一个堆。如果你有一个BST为一组值,你可以做一个序遍历对它们进行排序在O(n)时间。如果你可以从一个堆为O建立BST(n)的时间,然后你可以用有一个O(n)的排序算法 ..
发布时间:2015-11-30 15:11:41 C/C++

如何找到最接近的元素给定的键值中的二叉搜索树?

考虑到与整型值的BST作为钥匙我怎么找到最近的节点在一个BST的关键? 该BST重新presented使用节点的对象(JAVA)。最近的将是如4,5,9,如果关键是6将返回5。 解决方案 遍历树,你会找到的元素。当你这样做的记录最接近你的键的值。现在,当你没找到钥匙本身返回的记录值的节点。 所以,如果你正在寻找 3 在下面的树中的关键,你最终会在节点上 6 没有找到比赛,但你的入账价值应为 ..
发布时间:2015-11-30 15:04:38 C/C++

为什么红黑树化实施的Java TreeMap的?

Wikipedia关于AVL树的文章的第三段说:“由于AVL树是更严格的平衡,他们更快比红黑树的查询密集型应用。“ 所以,不应该 TreeMap的使用AVL树来实现的红 - 黑树代替(如将有更多的查找密集applictions为散列基于数据结构)? 解决方案 红黑树是更通用的。该做的比较出色的添加,删除和查询,但AVL树有更快的查找窗口以较慢的添加/删除成本。 Java的一般政策是提供最好的 ..
发布时间:2015-11-30 15:00:51 Java开发