二叉树-删除节点

要求

  • 如果删除的节点是叶子节点,则删除该节点
  • 如果删除的节点是非叶子节点,则删除该子树.
  • 测试,删除掉 5号叶子节点 和 3号子树.

img

完成删除节点的操作

思路

  • 首先先处理: 考虑如果数是空数root,如果只有一个root节点,则等价将二叉树置空

  • 然后进行下面的操作

  • 因为我们的二叉树是单向的,所以我们判断当前节点的子节点是否需要删除节点,而不能去判断当前这个节点是不是需要删除节点.

  • 如果当前节点的左子树不为空,并且左子节点no就是要删除结点,就将this.left=null; 并且就返回(结束递归删除)
  • 如果当前节点的右子树不为空,并且右子节点no就是要删除结点,就将this.right=null;并且就返回(结束递归删除)
  • 如果我们第二步和第三部都没有删除节点,那么我们就需要向左子树进行递归删除
  • 如果第四部也没有删除,则应当向右子树进行递归删除
  • 考虑如果数是空数 root,如果只有一个root节点,则等价于将二叉树置空


results matching ""

    No results matching ""