binary-search-tree相关内容
我正在处理要删除的节点是节点的情况.我不确定是否需要跟踪父级,以便在找到要删除的节点时将其父级指针设置为null.但是,我怎么知道要删除的节点是哪个子节点呢?我是否需要更多if语句? 感谢任何帮助,我觉得它不太复杂,但是我对如何真正摆脱节点感到困惑. 这是我到目前为止所拥有的: public void insert(E s) { root = insert(s, roo
..
我正在尝试创建一个程序,该程序将单词列表作为输入,并将它们分类到二叉树中,以便能够找到它们,例如像字典一样到目前为止,这是我所做的,但是由于newEl -> el = input;出现分段错误,我知道这是因为在首次创建树时,它试图指向NULL el,但是我不确定最好的是什么改进我的代码的方法将是.有人有想法么?谢谢. struct node *tra(struct node * start,
..
您好我正在尝试以(node element, parent node element)格式打印二进制搜索树的级别顺序.我目前正在使用队列来获取级别顺序,但是我很难获取父节点.是否可以处理队列?如果是这样,我将如何去做?如果不是,哪种最佳方法呢?谢谢! 例如,下面的树: 6 / \ 5 7 级别0:(6,空) 级别1:(5
..
因此,我到处寻找了很多有关如何从二进制搜索树中获取元素并将其写入文件,然后再将它们作为“加载"函数类型读回到树中的信息.我已经找到了一些解决方法,但是在将这些建议(例如此处看到的建议)落实到我的程序本身时,我遇到了问题.因此,我有几种排序方法,inOrder,postOrder和preOrder,但不必每次调用其中一种方法时都写入文件.我想有一个saveFile和loadFile方法,它们在被调用
..
我将通过基础CS原理作为速成课程来学习职业生涯杯指南,并停留在计算二叉树的最小/最大深度的示例上.由于这是我遇到的几乎每个示例都遇到的相同问题,因此我认为我会在此处发布问题. 这些指令将实现一种方法,该方法将检查树是否平衡.为此,您需要比较最小深度和最大深度,并确保它们之间的差异不大于1.此原理一目了然.第15行的方法就是要这样做. 但是,我不理解每个辅助方法(maxDepth和min
..
我有一个BST树大小的后置数组n我怎么显示只有一个BST可以用它构造.我知道如果从右到左添加节点,可以重建树,但是如何显示只有一棵右树呢? 我试图说有两棵可能的树,并试图显示这是不可能的,但是被卡住了 解决方案 仅因为它是BST,才有可能.回想一下,使二叉树成为有效的二叉搜索树: -左子树的值必须小于根的值 -右子树的值必须大于根的值 -左右子树必须是有效的二叉搜索树.
..
我正在尝试解决二进制搜索树问题,但是我无法通过所有测试用例.如果树是二进制搜索树,我需要返回true,否则,我需要返回false.谁能告诉我我在做什么错? ''' class node: def __init__(self, data): self.data = data self.left = None self.right = No
..
我需要获取bst元素的位置.这是我正在使用的结构numSubtree(用于跟踪子树中有多少个节点). struct bst_node { int val; int numSubtree; bst_node *left; bst_node *right; }; 例如,如果调用position_of(number),它应该返回
..
我正在尝试使用递归插入方法(BST,IIRC的常用方法)将字符串添加到二叉搜索树中,以便以后也可以使用递归将它们打印出来. 问题是,我遇到了我不太了解的细分错误.相关代码如下(该代码块来自我的主要功能): #include #include #include #include // Stores th
..
我正在使用惰性删除在Java中为二叉搜索树编写一个类(不是从树中删除节点,而是将“已删除"标志设置为true) 我的问题是,如何为这样的树实现findMin函数?仅转到最左边的叶子的常规方法将不起作用,因为该线索可能会被“删除". 例如,像这样的树,您删除20、5和17 25 *20 30 *17 89 *5 当您调
..
在Java中比较两个反对是否相等,必须同时实现equals方法和hashCode方法.我需要比较两个BST的相等性.在这种情况下如何实现hashCode方法?现在,在Node类上实现hashCode很简单:想象我的数据是int.但是我不能只添加节点的值来检查树是否相等.那我该怎么办呢?有人成功做到了吗? 我正在考虑可以做的许多不同的事情,但是我不确定它们的可扩展性.例如,我可以使用级别顺序,
..
有很多解决方案,如何以命令式语言在二叉树中查找最接近的上下键,但是在像Haskell这样的纯函数样式中进行操作时,缺少相同的问题.我很好奇,想知道在遇到两个最接近的键之前如何绕过二叉树.到目前为止,有一个功能和一些模式匹配: data TreeMap v = Leaf | Node { pair::(Integer, v), l::TreeMap v, r::TreeMap v} deriv
..
我是Prolog新秀,请记住这一点. 我尝试写一个谓词来确定某个给定术语是否是二叉搜索树.我想出了这段代码: is_btree(nil). is_btree(node(N,L,R)) :- number(N), is_btree(L), is_btree(R), small(N, R), big(N, L). small(N, nil). small(N,
..
在过去的两天里,我一直遇到一个奇怪的问题,但现在还无法解决.我正在尝试从2个文本文件中获取单词,并将这些单词添加到树中.我选择的获取单词的方法在这里引用: 将文本文件拆分为C . 我用来将单词插入树中的函数如下: void InsertWord(typosWords Words, char * w) { int error ; DataType x ; x.word
..
我有一个类Tree,我想将其扩展为更专业的数据结构,例如Order_tree和Interval_tree.这些扩充要求对Node进行添加,例如大小信息,并对某些算法进行较小的改动. 我想从性能,可读性和可维护性方面了解在C ++中实现增强的最佳方法.这些树不应以多态的方式使用.到目前为止,我一直试图公开继承Tree,然后重载基本方法. (我很抱歉成为面向对象编程的初学者) templa
..
我必须实现实例化类型类的Binary Tree: class Set s where add :: (Eq a) => a -> s a -> s a remove :: (Eq a) => a -> s a -> s a exists :: (Eq a) => a -> s a -> Bool fold :: (a -> b -> b) -> s a ->
..
有没有一种方法可以将Binary转换为排序的数组,而不必遍历每个数组索引的树? Node root; Node runner; int current_smallest; void findsmallest(Node root){ //Pre-order traversal if(root == null){ return; }else{
..
在项目中,我需要删除所有键值大于某个键的对象(键类型为Date,如果有关系的话). 据我所知,用Java实现的TreeMap是一棵红黑树,它是一个二进制搜索树.因此,删除子树时,我应该得到O(n). 但是我除了找到后视图并逐个删除需要O(logn)的任何其他方法之外,找不到其他方法. 实现此功能的任何好主意吗?我相信treeMap是要使用的正确的dataStructure,应该能够做
..
在我们的幻灯片中,答案之一是n/2片叶子,但我看到的另一个答案是(n + 1)/2.我想知道哪一个是正确的,为什么? 解决方案 在最简单的情况下,一棵带有根节点的二叉树,左边和右边有3个节点,其中两个是叶节点.是(n + 1)/2 .
..
type BSTree a = BinaryTree a data BinaryTree a = Null | Node (BinaryTree a) a (BinaryTree a) deriving Show flattenTree :: BinaryTree a -> [a] flattenTree tree = case t
..