【发布时间】:2014-05-01 02:51:55
【问题描述】:
我了解二叉搜索树中删除算法的基础,并创建了以下代码来删除树中的最大值。
public void DelLargest()
{
Node<T> del = this;
boolean child = this.left.empty();
boolean child2 = this.right.empty();
right.DelLargest();
if(child && child2)
this.head = null;
else if(child == true && child2 == false)
this.head = left;
}
基本上我所拥有的是递归运行直到'this'是最右边的节点,然后检查两种情况,'this'是否是叶子,或者'this'是否有左孩子。 (通常与这种算法相关的另一种情况是多余的,因为在找到具有最大值的节点时,我已经尽我所能。)我遇到的问题是让当前节点指向 null或节点左侧的值。
注意:这就是我的导师所说的“现代”二叉搜索树,其中顶点或“填充”节点和零或“空”节点是接口节点的两个子类,它们定义了每种类型的特征。
我已经设法将问题缩小到我没有返回给定节点值的方法这一事实。现在正在处理这个问题,我们将不胜感激。
【问题讨论】:
标签: java binary-tree