C++ 请问如何在排序二叉树里删除节点

2019-05-04 08:37发布

rt,代码需易懂,因为刚学二叉树不久,谢谢

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
唐城冬
2019-05-04 09:24

首先判断有没有父节点(若没有父节点,则需要在修改fp的对应子节点的地方改动一下)然后删除节点有没有子节点1.如果都没有 直接删了 父节点fp的对应子节点改为null释放p就行了2.如果只有一个子节点也好办,直接将fp的对应子节点改为p的这个子节点 再释放p就可以了3.最麻烦的是有2个子节点 这种情况你有2个选择,一个是从p的左子树删,就是在p的左子树找到最大的节点(即从p的左节点开始,一直向右,直到没有右子节点的那个就是),先删除该最大节点(只可能是1,2的情况),然后将这个最大节点替换树中p的位置(fp的对应子节点设为它,它的子节点设为p的2个子节点),然后释放p。从p的右子树删也一样,不过是从右子树寻找最小节点替换。

一周热门 更多>