Closed zybbigpy closed 5 years ago
您好,最近我在阅读您avltree的源代码, 并编译通过。不过我发现一个小问题就是使用
void avl_tree_replace(struct avl_tree *tree, void *victim, void *newdata);
这个函数时,如果newdata的key与victim的key相同,两个节点也会交换,但是树不会重构,这里是不是会有小问题呢?谢谢。
replace 本来就是替换同个 key 的节点用的,你要改 key 的值你是要删除老的,再添加新的,怎么可能用 replace 改了 key 值,还想保持平衡呢?
是的,我明白了,只是我单步跟踪的时候发现代码并没有在replace的时候保护key不被改变。谢谢您的回答,刚学完数据结构,看您的代码受益很多。
您好,最近我在阅读您avltree的源代码, 并编译通过。不过我发现一个小问题就是使用
这个函数时,如果newdata的key与victim的key相同,两个节点也会交换,但是树不会重构,这里是不是会有小问题呢?谢谢。