算法与数据结构学习(35)-树结构(二叉树结点的删除)

二叉树-删除节点

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

完成二叉树删除结点的操作:

规定:
1.如果删除的节点是叶子节点,则删除该节点
2.如果删除的节点是非叶子节点,则删除该子树.

思路:
首先先处理:
考虑如果树是空树root,如果就只有一个root结点,则将二叉树置空

//然后进行下面的操作
1.因为我们的二叉树是单向的,所以我们是判断当前结点的子节点是否是需要删除的结点,而不能判断当前的结点是不是需要删除的结点
2.如果当前的结点的做子节点不为空,并且左子节点就是要删除的结点,就将this.left = null;并且返回(递归删除结束)
3.如果当前结点的右子节点不为空,并且右子节点就是要删除的结点,就爱那个this.right = null;并且就返回(结束递归删除)
4.如果第2步和第3步没有删除结点,那我们就需要向左子树递归删除
5.如果第4不也没有 删除结点,则应当向右子树进行递归删除。
在这里插入图片描述

发布了92 篇原创文章 · 获赞 51 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/mzc_love/article/details/104750332