采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,我在删除树中的一个元素之后 ,用前序,中序排序时会时不时的遇到这个错误,在没有删除时好使的,请问要怎么解决。
说明你的删除逻辑有问题。最大的可能是,删除节点后,某些节点的 left 或者 right 的链接是错误的。
课程代码是没有这个问题,请尝试在课程代码下测试,是否有同样的问题?如果没有,请仔细调试比对,看看自己的代码哪里有问题。
本小节 Java 代码传送门:https://git.imooc.com/coding-71/coding-71/src/master/05-Binary-Search-Tree/Course%20Code%20%28Java%29/08-Binary-Search-Tree-Remove/src/bobo/algo/BST.java
继续加油!:)
谢谢老师了, else{ // key == node->key // 待删除节点左子树为空的情况 if( node.left == null ){ Node rightNode = node.right; node.right = null; count --; return rightNode; } // 待删除节点右子树为空的情况 if( node.right == null ){ Node leftNode = node.left; node.left = null; count--; return leftNode; } // 待删除节点左右子树均不为空的情况 // 找到比待删除节点大的最小节点, 即待删除节点右子树的最小节点 // 用这个节点顶替待删除节点的位置 Node successor = new Node(minimum(node.right)); count ++; successor.right = removeMin(node.right); successor.left = node.left; node.left = node.right = null; count --; return successor; } 我Node successor = minimum(node.right);有句代码改成这么写为什么就会报错呢
登录后可查看更多问答,登录/注册
课程专为:短时间内应对面试、升职测评等艰巨任务打造
9.0k 21
5.9k 3
5.2k 5
1.5k 18
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号