binary-search-tree相关内容
这是功课;请不要随便给我code 我有两种方法:删除(T数据)和 removeRec(节点< T>节点,T数据)。 在当前状态下,看来我的code只删除根的BST的节点。 @覆盖 公共t取出(T数据){ 如果(数据== NULL){ 抛出新抛出:IllegalArgumentException(“数据为空”); } 如果(根== NULL
..
这是伪作业(这是额外的学分)。我有一个BST它是一个指向包含字线(存储在别处)字样的索引。我需要实现的方式使用S-EX pressions这样我就可以结合搜索和(安培)。和或(|) 在命令提示符下用户可以键入类似: 查询((((火)及(林))|((海洋)及(船)))及(水)) 从本质上讲,应该返回包含单词消防,森林和水,以及包含海洋,舟和水的所有行的所有行。 我真正需要帮助的逻辑分析和节点
..
我有一个问题,它说:“计算紧迫的时间复杂度为插入n个数为二进制搜索树的过程”。它并不表示这是否是一个平衡的树或没有。那么,什么答案可以给这样的问题?如果这是一个平衡树,那么高度LOGN,并插入n个数需要O(nlogn)的时间。但是,这是不平衡的,它可能需要甚至为O(n 2 )在最坏情况下的时间。这是什么意思找到插入n个数为BST的紧迫的时间复杂度?我失去了一些东西?谢谢 解决方案 这可能是为O
..
考虑在BST删除过程中,当删除节点有两个孩子。比方说,我总是将其与节点持有其右子树的最小密钥进行更换。 现在的问题是:这是程序交换?也就是说,删除x和然后y具有相同的结果不是删除第一y和则x? 我想答案是否定的,但我不能找到一个反例,也没有找出任何合法的理由。 编辑: 也许我得再清楚不过了。 考虑移植(节点X,节点Y)程序:它代替x与Y(和它的子树)。 所以,如果我想删除一个节点(例如x
..
我买了一个可爱的小本关于几何计算,虽然这里阅读它,在那里我经常绊倒在使用这些特殊的二叉搜索树。这些树是平衡的,应当存放只在假期节点的数据,内部节点只能存储值向下引导搜索的叶子。 图片显示了一个例子树,其中叶子是矩形和内部节点是圆 我有两个问题有关: 什么是不存储数据的内部节点的优势在哪里? 对于学习的目的,我想实现这样的树,所以我想这可能是使用AVL树的基础是一个好主意,但果真如此吗?
..
这个问题是问我在接受采访时:我有一个二叉树,我必须找到考虑到树的两个随机节点的共同祖先(父)。我还给出一个指向根节点 我的回答是: 分别遍历树的两个节点,直到你达到了预期的节点。 平行在遍历存储元件与下一个地址中一个链表。然后,我们有我们两个人链表。因此,尝试比较这两个链接列表,并在这两个链接列表的最后一个公共节点父。 我在想,这个解决方案是正确的,纠正我,如果我错了。 如果此解决方案是正确
..
鉴于大小的两个未排序数组N分别,我们要确定二叉搜索树构建从他们的将是等于或不。 因此,阵列的元素被拾取并插入一个基本(没有平衡,无红黑色,什么都没有)二叉搜索树。 直接给出两个数组,我们可以判断它们是否会引起同一个二叉搜索树。 有一个明显的O(N 2 )最坏情况下的时间复杂度的解决方案:构建两棵树,并比较他们的平等。 是否有一个O(N)或O(N日志N)的解决办法? 这我试图提取问题的想
..
到目前为止,我知道,自我平衡的BST像AVL树和红黑树可以在O(log n)的时间执行这些操作。 但是,要使用这些结构,我们必须实现AVL树或RB树自己。 我听说有一个算法/实现这四个操作,而无需使用自动平衡BST。 用我们自己定义的结构,我们需要写那么多行。不过,我听说有在不到100线$ C $ C支持这四大运营商的可能性:\ 难道你们对这个应该怎么做任何想法? 除了BST,还有没
..
参考: 有人问我这个问题@MS SDE采访时,第3轮。而且这不是一个家庭作业的问题。我也给它一个思想和提我下面的方法。 问: 修改的BST,使之成为尽可能均衡。不用说,你应该这样做尽可能高效。 提示: 记者说,这是一个合乎逻辑的问题,如果你有不同的想法,你会得到答案。没有复杂的编码参与。 - >说了这么多,我不认为他是希望我指向AVL / RB树 我的解决方法: 我建议,我会做序树的遍历,
..
有多少二叉搜索树可以从n个不同元素构成?我们怎样才能找到一个数学证明的公式呢? 示例: 如果我们有3个不同的元素,比如1,2,3, 5二叉搜索树。 // EN:解决方案 给定的n个元素,可以从这些元素制成二进制搜索树的数量是由第n个 直观地,Catalan数重新present的方法可以创建一个结构出,其由以下述方式n个元素的数目: 排列元素为1,2,3,...,N。 在挑选这些元素作
..
这个前面的问题问有多少种方法有插入值1 - 7成二叉搜索树,会导致下面的树: 4 / \ 2 6 / \ / \ 1 3 5 7 (答案是80,的方式)。 假设更普遍,你给出一个任意BST拿着一些设定值,并想知道有多少可能的方法有,将这些值转换,将最终产生结果树一个BST。是否有一个有效的算法来确定呢? 谢谢! 解决方案 我们可以用一个巧妙的递归
..
对于给定的二叉树,发现这也是二叉搜索树的最大子树? 例如: 输入: 10 / \ 50 150 / \ / \ 25 75 200 20 / \ / \ / \ / \ 15 35 65 30 120 135 155 250 输出: 50
..
如何将二叉树转换成二叉搜索树就地,也就是说,我们不能使用任何额外的空间。 解决方案 您不会过多去,但如果需求是什么,我觉得是,你有一个二叉树已经创建并坐在内存,但没有排序。(你想让它进行排序,反正路) 我假设这棵树结的样子 结构tree_node { 结构tree_node *离开; 结构tree_node *权利; data_t数据; }; 我也假设你可以
..
我想找到一个数组中增加子的数目,我碰到一个二进制索引树,为我们提供了 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
..
我有一个疑问,如果我有这样的二叉搜索树那么这将是节点6和1 致谢最低的共同祖先 解决方案 按照 最低的共同祖先(LCA)是图论的一个概念和 计算机科学。设T是有n个节点的根树。最低的 共同祖先之间两个节点v和w定义为最低的 同时具有V和W的后代(在这里我们允许节点节点T中 是其自身的后代)。 所以,是根据这个定义去正确的答案应该是 6 。如果这是一个面试问题将是很好事先与面试官澄清。
..
我要你给我一个提示,以证明这项工作从Cormen的书: “证明,无论什么节点,我们开始在一个高度小时二叉搜索树,K 连续调用树后继需要O(K + H)的时间。“ 解决方案 让 X 是起始节点和以Z 是后结束节点 K 连续调用树的继任者。 让 P 介于的简单路径X 和以Z 的包容性。 让是是的共同祖先X 和以Z 的 P 探访。 P 的长度最多为 2小时,这是 0(H) 。 让输出是元素,它们的值
..
我给出一个字符串,即“CPHBDZ”。通过将(按顺序)的信件到BST我将有: Ç / \ 乙P / \ 赫兹 / ð 如果我们改变秩序的字符串为“CBPHDZ”我们会得到相同的树。 我必须找到并列出提供相同的BST输入字符串的所有排列。我想出了如何计算一个数字的排列组合,但我想不出任何算法实际上找到它们。 解决方案 假设你没有做任何旋转(等)来平衡树,可以从树的结构得到
..
我想我知道答案,最小的复杂性是 O(nlogn) 但有什么办法,我可以从堆的二叉搜索树中的 O(N)的复杂性? 解决方案 没有算法从堆为O建设BST(n)的时间。这样做的原因是,给定n个元素,你可以从他们的O(n)的时间建立一个堆。如果你有一个BST为一组值,你可以做一个序遍历对它们进行排序在O(n)时间。如果你可以从一个堆为O建立BST(n)的时间,然后你可以用有一个O(n)的排序算法
..
考虑到与整型值的BST作为钥匙我怎么找到最近的节点在一个BST的关键? 该BST重新presented使用节点的对象(JAVA)。最近的将是如4,5,9,如果关键是6将返回5。 解决方案 遍历树,你会找到的元素。当你这样做的记录最接近你的键的值。现在,当你没找到钥匙本身返回的记录值的节点。 所以,如果你正在寻找 3 在下面的树中的关键,你最终会在节点上 6 没有找到比赛,但你的入账价值应为
..
Wikipedia关于AVL树的文章的第三段说:“由于AVL树是更严格的平衡,他们更快比红黑树的查询密集型应用。“ 所以,不应该 TreeMap的使用AVL树来实现的红 - 黑树代替(如将有更多的查找密集applictions为散列基于数据结构)? 解决方案 红黑树是更通用的。该做的比较出色的添加,删除和查询,但AVL树有更快的查找窗口以较慢的添加/删除成本。 Java的一般政策是提供最好的
..