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

2022-08-24 03:31

1个回答
首先判断有没有父节点(若没有父节点,则需要在修改fp的对应子节点的地方改动一下)
然后删除节点有没有子节点
1.如果都没有 直接删了 父节点fp的对应子节点改为null释放p就行了
2.如果只有一个子节点也好办,直接将fp的对应子节点改为p的这个子节点 再释放p就可以了
3.最麻烦的是有2个子节点 这种情况你有2个选择,一个是从p的左子树删,就是在p的左子树找到最大的节点(即从p的左节点开始,一直向右,直到没有右子节点的那个就是),先删除该最大节点(只可能是1,2的情况),然后将这个最大节点替换树中p的位置(fp的对应子节点设为它,它的子节点设为p的2个子节点),然后释放p。从p的右子树删也一样,不过是从右子树寻找最小节点替换。
我手头只有java的 就不贴出来了
相关问答
二叉排序树的删除一个节点的为码算法
2个回答2023-01-28 15:01
bool Delete_Node(Tree& T,char key);删除二叉树中值为key的节点如果树中不含有对应节点返回fals否则返回true;算法如下 { 首先在循环中查找到值为key的节...
全文
二叉排序树删除结点后所得的二叉树唯不唯一?
1个回答2022-10-12 02:31
由n个结点组成的二叉排序树是不唯一的。而二叉排序树删除一个结点后,就是要把该节点的子孙结点重组成一颗二叉排序树,这自然也是不唯一的咯。
二叉排序树
1个回答2022-09-16 04:29
二叉树具有以下重要性质: 性质1 二叉树第i层上的结点数目最多为2i-1(i≥1)。 证明:用数学归纳法证明: 归纳基础:i=1时,有2i-1=20=1。因为第1层上只有一个根结点,所以命题成立。 归...
全文
什么是二叉排序树
2个回答2022-07-19 10:09
二叉排序树(Binary Sort Tree),首先它是一棵树,“二叉”这个描述已经很明显了,就是树上的一根树枝开两个叉,于是递归下来就是二叉树了(下图所示),而这棵树上的节点是已经排好序的,具体的...
全文
什么是二叉排序树?
1个回答2022-10-25 05:35
二叉排序树要么是空二叉树,要么具有如下特点: 二叉排序树中,如果其根结点有左子树,那么左子树上所有结点的值都小于根结点的值;二叉排序树中,如果其根结点有右子树,那么右子树上所有结点的值都大小根结点的...
全文
什么叫二叉排序树
2个回答2022-10-26 14:35
1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树; (4)没有键值相等的结点。
数据结构关于删除二叉排序树的小问题
1个回答2023-02-08 06:28
如果你能够真正理解传入参数为什么用引用!!!这个问题显然就不存在啦。。
二叉树和二叉排序树有啥区别
3个回答2022-10-22 02:35
二叉树和二叉排序树区别为:子树结点不同、键值相等不同、子树树型不同。 一、子树结点不同 1、二叉树:二叉树的左/右子树上所有结点的值可以大于、等于和小于它的根结点的值。 2、二叉排序树:二叉排...
全文
大话数据结构 二叉排序树 节点删除有疑问
1个回答2023-02-06 09:21
删除节点之后,二叉树的中序遍历也必须有序,所以删掉之后,在这个节点前或后的结点替换它的位置
幽默笑话/歇后语/剃头的挖耳朵
1个回答2024-06-10 12:22
剃头的挖耳朵歇后语答案 —— 外行 耳朵长在膝盖上——懒得听 儿媳妇怀孕——装孙子 剃头的挖耳朵——外行 棉花耳朵——根子软
热门问答