树子节点的删除

1、删除叶子节点

1、找到这个叶子节点

2.找到当前节点的父节点
3.判断要删除的节点是父节点的左子树还是右子树
     parent.left = null
     parent.right = null
情况一:删除叶子节点
思路
(1)需要先去找到要删除的节点 trageNode
(2)找到trageNode的父节点 parent (考虑是否存在父节点)
(3)确定 trageNode是 parent 的左子节点还是右子节点
(4)根据前边的情况对应删除
左子节点:parent.left = null
右子节点:parent.left = null
情况二:删除有两个子树的节点
思路
(1)需要先去找到要删除的节点 trageNode
(2)找到trageNode的父节点 parent (考虑是否存在父节点)
(3)从targetNode的右子树找到最小的节点
(4)用一个临时变量,将最小的节点值保存temp
(5)删除该最小节点
(6)targetNode.value = temp
情况三:删除只有一个子树的节点
思路
(1)需要先去找到要删除的节点 trageNode
(2)找到trageNode的父节点 parent (考虑是否存在父节点)
  (3)确定targetNode的子节点是左子节点还是右子节点
  (4)targetNode是 parent 的左子节点还是右子节点
  (5)如果targetNode有左子节点
  (5.1)如果targetNode是parent的左子节点
        parent.left = tergetNode.left
  (5.2)如果targetNode是parent的右子节点
        parent.right = tergetNode.left
   (6)如果targetNode有右子节点
   (6.1)如果targetNode是parent的左子节点
        parent.left = tergetNode.right
   (6.2)如果targetNode是parent的右子节点
        parent.right = tergetNode.right
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值