Java 二叉搜索树删除递归 return 删除元素
Java binary search tree delete recursive return removed element
这是我目前的代码。我不知道如何 return 删除的元素。现在它是 return 树的新根。你们能提供一些指示吗?谢谢
public SomeDataType remove(String key) {
Node removed = remove(root, key);
if (removed != null){
return removed.data;
}
return null;
}
// TO DO: RETURN REMOVED NODE
private Node remove(Node n, String key) {
if (n == null) {
return null;
}
else if (n.data.getKey().compareTo(key) < 0){
n.right = remove(n.right, key);
}
else if (n.data.getKey().compareTo(key) > 0){
n.left = remove(n.left, key);
}
else{
if (n.right != null){
SomeDataType successor = leftMost(n.right).data;
n.data = successor;
n.right = remove(n.right, successor.getKey());
}
else{
n = n.left;
}
}
return n;
}
private Node leftMost(Node n) {
if (n.left == null){
return n;
}
else{
return leftMost(n.left);
}
}
在您的包装器方法中创建一个变量来保存密钥,然后 return 它。
public SomeDataType remove(String key) {
E data = key //E is a generic data type
Node removed = remove(root, key);
if (removed != null){
return data;
}
return null;
这是我目前的代码。我不知道如何 return 删除的元素。现在它是 return 树的新根。你们能提供一些指示吗?谢谢
public SomeDataType remove(String key) {
Node removed = remove(root, key);
if (removed != null){
return removed.data;
}
return null;
}
// TO DO: RETURN REMOVED NODE
private Node remove(Node n, String key) {
if (n == null) {
return null;
}
else if (n.data.getKey().compareTo(key) < 0){
n.right = remove(n.right, key);
}
else if (n.data.getKey().compareTo(key) > 0){
n.left = remove(n.left, key);
}
else{
if (n.right != null){
SomeDataType successor = leftMost(n.right).data;
n.data = successor;
n.right = remove(n.right, successor.getKey());
}
else{
n = n.left;
}
}
return n;
}
private Node leftMost(Node n) {
if (n.left == null){
return n;
}
else{
return leftMost(n.left);
}
}
在您的包装器方法中创建一个变量来保存密钥,然后 return 它。
public SomeDataType remove(String key) {
E data = key //E is a generic data type
Node removed = remove(root, key);
if (removed != null){
return data;
}
return null;