找回密码
 立即注册
搜索
热搜: 日历 老黄历
查看: 22|回复: 1

求排序二叉树删除结点的算法

[复制链接]

59

主题

0

回帖

201

积分

新手上路

Rank: 1

积分
201
发表于 2026-4-7 16:27:15 | 显示全部楼层 |阅读模式
回复

使用道具 举报

0

主题

9627

回帖

1万

积分

新手上路

Rank: 1

积分
19726
发表于 2026-4-7 17:10:45 | 显示全部楼层
首先判断有没有父节点【若没有父节点,则需要在修改fp的对应子节点的地方改动一下】
然后删除节点有没有子节点
1.如果都没有 直接删了 父节点fp的对应子节点改为null释放p就行了
2.如果只有一个子节点也好办,直接将fp的对应子节点改为p的这个子节点 再释放p就可以了
3.最麻烦的是有2个子节点 这种情况你有2个选择,一个是从p的左子树删,就是在p的左子树找到最大的节点【即从p的左节点开始,一直向右,直到没有右子节点的那个就是】,先删除该最大节点【只可能是1,2的情况】,然后将这个最大节点替换树中p的位置【fp的对应子节点设为它,它的子节点设为p的2个子节点】,然后释放p。从p的右子树删也一样,不过是从右子树寻找最小节点替换。
我手头只有java的 就不贴出来了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|xuepai.net

GMT+8, 2026-4-21 22:02 , Processed in 1.171875 second(s), 23 queries .

快速回复 返回顶部 返回列表