gpt4 book ai didi

java - 二叉树问题的 isEmpty 方法

转载 作者:行者123 更新时间:2023-12-01 05:28:08 26 4
gpt4 key购买 nike

我正在尝试为二叉树自己编写 isEmpty 方法,但遇到问题。这就是我正在使用的方法。

public boolean isEmpty(){
if(root == null) return true;
else return false;
}

当我只添加一个元素,然后删除该元素并调用 isEmpty 时,我得到的不是 true,而是 false。

我的实现有问题吗?

<小时/>

这就是删除方法:

  /**
* Internal method to remove from a subtree.
* @param x the item to remove.
* @param t the node that roots the tree.
* @return the new root.
* @throws ItemNotFoundException if x is not found.
*/
protected BinaryNode<AnyType> remove( AnyType x, BinaryNode<AnyType> t )
{
if( t == null )
throw new ItemNotFoundException( x.toString( ) );
if( x.compareTo( t.element ) < 0 )
t.left = remove( x, t.left );
else if( x.compareTo( t.element ) > 0 )
t.right = remove( x, t.right );
else if( t.left != null && t.right != null ) // Two children
{
t.element = findMin( t.right ).element;
t.right = removeMin( t.right );
}
else
t = ( t.left != null ) ? t.left : t.right;
return t;
}

这是remove方法使用的removeMin方法:

        /**
* Internal method to remove minimum item from a subtree.
* @param t the node that roots the tree.
* @return the new root.
* @throws ItemNotFoundException if t is empty.
*/
protected BinaryNode<AnyType> removeMin( BinaryNode<AnyType> t )
{
if( t == null )
throw new ItemNotFoundException( );
else if( t.left != null )
{
t.left = removeMin( t.left );
return t;
}
else
return t.right;
}

最佳答案

检查您的删除元素代码。通常,代码会找出删除节点的父节点并将相应的引用设置为空。对于最后一个元素,它必须设置为 null root 变量。

关于java - 二叉树问题的 isEmpty 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9448364/

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