gpt4 book ai didi

java - java BST 中的删除方法

转载 作者:太空宇宙 更新时间:2023-11-04 08:58:07 25 4
gpt4 key购买 nike

我确实有一个硬件问题...我必须为二叉搜索树编写一个删除方法,到目前为止我所拥有的如下,但我不断收到一堆与我的删除方法相关的错误,我不确定为什么...请有人能够检查我的代码。谢谢。我还尝试创建一个 find 方法,但我也遇到了一些麻烦......这一直在我的删除代码的底部。

import java.util.*;

class TreeNode383<E extends Comparable> {

private E data;

private TreeNode383<E> left;

private TreeNode383<E> right;

private TreeNode383<E> parent;

public TreeNode383( ) { left = right = parent = null; }

public TreeNode383( E d, TreeNode383 <E> l, TreeNode383 <E> r,
TreeNode383 <E> p) {

data = d;

left = l;

right = r;

parent = p;

}

public E getData( ) { return data; }

public void setData(E d) { data = d; }

public TreeNode383<E> getLeft( ) { return left; }

public void setLeft(TreeNode383<E> l) { left = l; }

public TreeNode383<E> getRight( ) { return right; }

public void setRight(TreeNode383<E> r) { right = r; }

public TreeNode383<E> getParent( ) { return parent; }

public void setParent(TreeNode383<E> p) { parent = p; }


public String toString( ) {

String answer = "";

if (left != null) answer += left.toString( );

answer += data + " ";

if (right != null) answer += right.toString( );

return answer;
}
}

**The start of my remove method**


boolean remove (E obj)
{

if(root == obj)

return false;


//when deleting a leaf just delete it

else if(obj.getleft == NULL && obj.getright == NULL)
parent = obj = NULL;


//when deleting an interior node with 1 child
//replace that node with the child

else if(obj.getleft == NULL && obj.getright != NULL)
obj.setright = new TreeNode383<E>(newData, null, null, null);

else if(obj.getleft != NULL && obj.getright == NULL
obj.setleft = new TreeNode383<E>(newData, null, null, null);


//when deleting an interior node with 2 children
//find left most node in right subtree,
//promote it to replace the deleted node
//promote its child to replace where it was



/*
private BinaryNode findMin( BinaryNode t )
{
if( t == null )
return null;
else if( t.left == null )
return t;
return findMin( t.left );
}
*/

最佳答案

objE 的一个实例不是TreeNode383<E>所以它没有 getLeft()getRight()方法。即使确实如此,你也拼写错误。

什么是 root ?我在任何地方都看不到这样的声明。

这种语法也没有任何意义:

obj.setright = new TreeNode383<E>(newData, null, null, null);

setRight()是方法而不是字段(Java 没有像 C# 那样的属性)另外,名称中需要大写“R”。

所以也许应该是这样

obj.setRight(new TreeNode383<E>(newData, null, null, null));

也就是说,如果 newData已声明,但事实并非如此。

这里有太多错误,无法理解您的代码。尝试一次实现一项功能。

关于java - java BST 中的删除方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1704623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com