关于remove(Node,E)方法

来源:6-12 删除二分搜索树的任意元素

何时才能成大佬

2019-09-08

在remove(Node,E)中,交换successor.right=removeMin(node.right);和successor.left=node.left; 的顺序,程序就会报错,例如:
在主方法中:
图片描述
当remove(Node,E)方法的次序为
图片描述
程序运行结果为:
图片描述

但是,当remove(Node,E)方法的次序为
图片描述
程序运行结果为:
图片描述

请问bobo老师这个是怎么回事?

写回答

2回答

liuyubobobo

2019-09-08

这两句话的顺序不能颠倒。应该和这个问题是一个问题:http://coding.imooc.com/learn/questiondetail/62681.html


关键是,先执行 successor.left=node.left; 改变了node.right的树的结构。

而 successor.right=removeMin(node.right); 依赖于这个结构。


继续加油!:)

1
1
何时才能成大佬
谢谢老师,画图理解了
2019-09-08
共1条回复

何时才能成大佬

提问者

2019-09-08

//img.mukewang.com/szimg/5d749215084eabc514401920.jpg

//img.mukewang.com/szimg/5d74923c08a991c000000000.jpg


谢谢bobo老师了  画了图理解了


1
1
liuyubobobo
大赞!继续加油!:)
2019-09-08
共1条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程