9得票6回答
C语言链表: 在结尾插入节点

我在C语言中的链表插入方法上遇到了一些麻烦。它似乎只能在链表开头添加。我做其他插入都失败了。而且这个CodeBlocks调试器很难理解,我还是不懂。它从来没有给我值,只有内存地址。无论如何,这是我的函数。你有看到它失败的原因吗? /* function to add a new node a...

9得票3回答
懒惰删除对二叉树或链表有什么优缺点?

最近,我在一门数据结构课程中被问到了一个问题:如何对数组、链表或二叉树实现惰性删除(即首先标记需要删除的项目,然后在稍后的某个时间删除所有标记的项目),这样做有什么优缺点。以下是我的回答: 对于数组来说,这种方式会有帮助,因为每次删除索引时都需要移动数组,使用惰性删除可以节省这些时间。但是...

8得票2回答
将排序数组转换为二叉搜索树

我正在处理“将有序数组转换为具有最小高度的二叉搜索树”的问题,其要求如下: 给定一个已排序(按递增顺序)的数组,转换它以创建具有最小高度的二叉树。 我无法找到为什么我的递归不停止的原因。它应该在7被传递时停止,并且不会再次打印出7。我还发现了一个类似的答案,看起来使用了与我的相同策略,但它...

19得票5回答
测试两个二叉树是否相等的最有效方法

你如何在Java中实现二叉树节点类和二叉树类以支持最有效(从运行时间的角度)的等式检查方法(也必须实现): boolean equal(Node<T> root1, Node<T> root2) {} 或者 boolean equal(Tree ...

7得票3回答
如何计算二叉树中节点的总数

我需要计算二叉树中节点的总数。但是当我执行这段代码时,问题就出现了,它给出了错误的节点总数。我的程序输出类似于993814,而应该是7。 如何解决这个问题? #include<stdlib.h> #include<stdio.h> struct binarytre...

8得票7回答
来自两个未排序数组的二叉搜索树

在面试中有这样一个问题:给定两个未排序的数组,检查它们是否会创建相同的二叉搜索树。例如:2、1、4、0和2、1、0、4将形成相同的二叉搜索树。 2 / \ 1 4 / 0 请建议一些好的算法。

17得票5回答
在C语言中同时使用箭头->和点.运算符

我原本认为可以通过使用箭头和点操作符一起来访问链表或类似结构中子节点的数据,例如:typedef struct a{ int num; struct a *left; struct a *right; }tree; tree *sample; ... if(sample->left.n...

7得票2回答
使用foldr构建平衡二叉树

我写了一个名为foldTree的函数,可以从列表构建平衡二叉树。我必须使用foldr,我已经使用它了,但我让insertInTree函数递归 =( 目前我只知道通过这种方式遍历树 =))。 更新: 我不确定insertInTree函数是否正确在递归中计算高度? =(( 在这里需要一些帮助。 ...

15得票4回答
磁盘上的持久化(纯函数式)红黑树性能问题

我正在研究最适合实现一个简单的开源对象时间数据库的数据结构,并且目前我非常喜欢使用Persistent Red-Black树来实现。 我使用持久化数据结构的主要原因首先是为了尽量减少锁的使用,以便使数据库能够尽可能地并行。此外,这将更容易实现ACID事务,甚至可以抽象出数据库以在某种类型的集...

9得票4回答
带有重复元素的二叉搜索树

我知道,BST 不允许重复。例如,如果我有一个单词 "RABSAB"。 上述字符串的二叉搜索树如下: R /\ A S \ B 如果我们想在树中包含重复项,那么树会如何变化?我在面试中被问到了这个问题。 他们要求我画出: 1. 二叉树 2....