java 如何卸载qq_java二叉树删除如何操作?

今天所讲的是二叉树的删除,小伙伴们点进来,肯定是对二叉树有说了解的吧啊,首先学习二叉树删除,建议先了解诶二叉树的建立,遍历,插入和查找,以便小伙伴们能够很好的掌握今天小编所讲的内容,接下来让我们一起来了解下吧。

二叉树的删除操作是比较复杂的。首先要找到删除的节点。要删除的结点对象并不一定要进行删除操作。因为通过函数调用得到的只是他的副本。并不会真正的把他删掉。你只要让他不在树上就行了。让删除结点的父节点,左右孩子结点用新的结点来指向就可以把该结点从树上进行删除了。

然后找到要插入的结点。有三种情况来进行找:

1.删除结点有左孩子

这种情况下,找到左孩子的最右孩子。找到的结点是要上去的结点。如果该左孩子没有右孩子,则该左孩子是要上去的结点。

2.删除结点没有左孩子,有右孩子

要上去的结点是最右孩子。

3.删除结点没有孩子(叶节点)

这种情况直接让指向他的父结点指向空就行了,就把他从树上删除了。

注意事项:

原来删除结点的左右孩子结点和父结点不用管,只要把该插入结点的值给删除结点就行了,同时你还要把上去的结点的孩子结点处理一下。这样可以不影响后续的操作。

总而言之就是把插入结点的值给删除节点。然后做一下交接,不能影响后续的操作,也不要破坏二叉排序树的性质就行了。推荐在纸上画一个排序树,然后试着删除一个结点,看看怎么处理上去的结点。

理论是不是已经掌握好了?接下来给大家通过代码的方式给大家展示。public void Delete(Tree root, int value)

{

Tree temp = new Tree();

temp = Select(root, value);

if (temp.value == 0)

{

System.out.println("你要删除的数值" + value + "不存在");

}

else

{

Tree p = new Tree();

Tree node = new Tree();

Tree parent = new Tree();

p = p.Select(root, value); //p是要删除的结点

node = p;

if (p != null)

{

if (p.left != null)

{

p = node.left;

while (p.right != null)

{

p = p.right;

}

node.value = p.value;

if (node.left.right == null)

{

node.left = p.left;

}

else

{

p.parent.right = p.left;

}

}

else if (p.right != null)

{

p = p.right;

node.value = p.value;

node.left = p.left;

node.right = p.right;

}

else

{

if (p.equals(p.parent.left))

{

p.parent.left = null;

}

if (p.equals(p.parent.right))

{

p.parent.right = null;

}

}

System.out.println("");

System.out.println("数据" + value + "删除成功");

}

}

}

以上就是今天所讲的二叉树删除的java常见问答,如果想要了解更多,请继续关注本网站。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值