- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试构建一棵字符串树,但我似乎遇到了一些问题,我不确定如何解决。
public static TreeNode buildTree(TreeNode t, String s)
{
int size = s.length();
while(size > 0)
{
String current = s.substring(0,1);
insert(t, current);
s = s.substring(1);
size--;
}
System.out.println("This is the tree:");
System.out.println(t);
return t;
}
/**************************
Recursive algorithm to build a BST: if the node is null, insert the
new node. Else, if the item is less, set the left node and recur to
the left. Else, if the item is greater, set the right node and recur
to the right.
*****************************/
private static TreeNode insert(TreeNode t, String s)
{
if(t == null)
{
t = new TreeNode(s, null, null);
return t;
}
else
{
String s1 = (String) t.getValue();
String s2 = s;
//this line below is problematic
if(s2.compareTo(s1) == -1 || s2.compareTo(s1) == 0) //s2 comes before s1
{
t.setLeft(new TreeNode(s2));
insert(t.getLeft(), s);
}
else
{
t.setRight(new TreeNode(s2));
insert(t.getRight(), s);
}
}
return t;
}
这是 TreeNode 类:
class TreeNode
{
private Object value;
private TreeNode left, right;
public TreeNode(Object initValue)
{
value = initValue;
left = null;
right = null;
}
public TreeNode(Object initValue, TreeNode initLeft, TreeNode initRight)
{
value = initValue;
left = initLeft;
right = initRight;
}
public Object getValue()
{
return value;
}
public TreeNode getLeft()
{
return left;
}
public TreeNode getRight()
{
return right;
}
public void setValue(Object theNewValue)
{
value = theNewValue;
}
public void setLeft(TreeNode theNewLeft)
{
left = theNewLeft;
}
public void setRight(TreeNode theNewRight)
{
right = theNewRight;
}
}
当我从 buildTree 方法调用 insert 方法时,我尝试 t = new TreeNode(s);或 t= new TreeNode(s, null, null) 当 t==null 最初时,树返回到 buildTree 时保持为 null。但是,它似乎在插入方法中更新了树。我该如何解决这个问题?
此外,插入方法中的比较似乎有问题,因为它经常返回以下内容:
Exception in thread "main" java.lang.StackOverflowError
任何帮助将非常感激,因为我已经坚持这个问题很长一段时间了!
最佳答案
这是因为在Java中参数是通过引用传递的,所以当你这么做的时候
t = new TreeNode(s, null, null);
您正在为 t 分配一个新引用,而不是为收到的引用分配一个“值”
既然你要返回,如果你这样做,它应该会起作用
t = insert(t, current);
关于错误,您必须在某些情况下产生无限循环的调用插入,您应该能够在调试中检测到它
关于java - 在java中构建字符串的二叉搜索树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60434855/
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 Improve th
我在使用 fork 和 pipes 制作一个用于学习目的的简单程序时遇到了问题。我想要一个 child 向 parent 发送一些数据,然后这个( parent )再次将它发送给 child 。 结果
我正在制作一个需要同时做 3 件事的 python 脚本。什么是实现此目的的好方法,就像我听说的关于 GIL 的方法一样,我不再那么倾向于使用线程了。 脚本需要做的两件事将非常活跃,他们将有很多工作要
有没有办法运行sshd以便它可以(至少对于有限数量的登录)成功返回提示(可能是 busybox),即使 fork 不可用(例如,PID 不足)? 在我看来,这应该是可能的,例如,sshd 预 fork
我意识到 Bootstrap 将使用 v4 切换到 rem。但是,我使用的是当前版本 (v3),我想使用 rem。 原因?我希望网站上有可以为最终用户缩放字体大小的按钮。我相信最好的实现方式是使用 r
我试图在这个程序中将信息从子进程传递到父进程。这是到目前为止的代码,仍在清理它: #include #include #include #include main() { char *
我试图理解 fork 在 C 中是如何工作的,但我在某个地方误解了一些东西。 我去年遇到了一位教授给我的测试,但我无法回复它:我们有 3 个任务(进程或线程),伪代码如下: Th1 { display
我在使用 fork() 之类的东西时遇到了一些麻烦。 我正在开发一个 shell,用户可以在其中编写将像在普通普通 shell 中一样执行的命令。 我有一个像这样的主要功能: void Shell::
我有一个 Python 主进程,以及由主进程使用 os.fork() 创建的一组或多个 worker . 我需要将大型且相当复杂的数据结构从工作程序传递回主进程。您会为此推荐哪些现有库? 数据结构是列
我对这个 fork 语句很陌生,我不知道 C 程序上的 fork 方法。你能告诉我这段代码的三个可能的输出是什么吗? #include #include int main(void) {
for(i=0;i #include int main() { for(int i=0;i<2;i++) { if(fork()==0) { printf("Hi %d %d
背景 我正在用 C 语言编写一个共享库,与 LD_PRELOAD 动态链接,这意味着拦截和覆盖预加载它的应用程序的网络调用,例如 socket()、connect()、recv()、send()等 在
我是一名优秀的程序员,十分优秀!