<分区>
这是一个二叉树实现的例子 here . 这段代码工作正常。 但是我可以在 add 方法中将根创建为单个一次性节点吗?
代替
public void add(int value) {
root = addRecursive(root, value);
}
我愿意
public void add(int value) {
if (root == null) {
root= new Node(value);
}
// then i add left- and right-leafs recursively
if (value < root.value) {
root.left = addRecursive(root, value);
} else if (value > root.value) {
root.right= addRecursive(root, value);
}
}
如果我添加 3 个或更少的节点 - 没关系
bt.add(2);
bt.add(1);
bt.add(3);
但是如果我添加超过 3 个节点,我会因为递归函数而得到 StackOverflow 错误
private Node addRecursive(Node current, int value) {
if (current == null) {
return new Node(value);
}
if (value < current.value) {
current.left = addRecursive(current.left, value);
} else if (value > current.value) {
current.right = addRecursive(current.right, value);
}
return current;
}