二叉树-删除节点
要求
1.如果删除的节点是叶子节点,则删除该节点
2.如果删除的节点是非叶子节点,则删除该子树.
3.测试,删除掉 5号叶子节点 和 3号子树.
完成二叉树删除结点的操作:
规定:
1.如果删除的节点是叶子节点,则删除该节点
2.如果删除的节点是非叶子节点,则删除该子树.
思路:
首先先处理:
考虑如果树是空树root,如果就只有一个root结点,则将二叉树置空
//然后进行下面的操作
1.因为我们的二叉树是单向的,所以我们是判断当前结点的子节点是否是需要删除的结点,而不能判断当前的结点是不是需要删除的结点
2.如果当前的结点的做子节点不为空,并且左子节点就是要删除的结点,就将this.left = null;并且返回(递归删除结束)
3.如果当前结点的右子节点不为空,并且右子节点就是要删除的结点,就爱那个this.right = null;并且就返回(结束递归删除)
4.如果第2步和第3步没有删除结点,那我们就需要向左子树递归删除
5.如果第4不也没有 删除结点,则应当向右子树进行递归删除。
来源:CSDN
作者:九岁ya
链接:https://blog.csdn.net/mzc_love/article/details/104750332