首页 > 解决方案 > (C++)关于 AVL-Tree 的 Romove(x) 函数有什么问题?当我测试它时它引起了一些中断

问题描述

我创建了一个包含25 个随机整数的AVL-Tree,我希望以原始顺序删除每个整数。所以每次我删除一个数字时,我都会使用 InOrderTraverse。但它会导致一些中断,我发现InOrderTraverse的列表并没有一一减少,它有一些像这样的裂缝(见删除 143 和 564):

Create AVL-Tree:
279 302 225 801 299 416 72 91 738 150 629 265 343 456 63 347 143 564 908 930 616 715 169 36 67
InOrderTraverse:
36 63 67 72 91 143 150 169 225 265 279 299 302 343 347 416 456 564 616 629 715 738 801 908 930
Remove:
delete:279     Traverse: 36 63 67 72 91 143 150 169 225 265 299 302 343 347 416 456 564 616 629 715 738 801 908 930
delete:302     Traverse: 36 63 67 72 91 143 150 169 225 265 299 343 347 416 456 564 616 629 715 738 801 908 930
delete:225     Traverse: 36 63 67 72 91 143 150 169 265 299 343 347 416 456 564 616 629 715 738 801 908 930
delete:801     Traverse: 36 63 67 72 91 143 150 169 265 299 343 347 416 456 564 616 629 715 738 908 930
delete:299     Traverse: 36 63 67 72 91 143 150 169 265 343 347 416 456 564 616 629 715 738 908 930
delete:416     Traverse: 36 63 67 72 91 143 150 169 265 343 347 456 564 616 629 715 738 908 930
delete:72      Traverse: 36 63 67 91 143 150 169 265 343 347 456 564 616 629 715 738 908 930
delete:91      Traverse: 36 63 67 143 150 169 265 343 347 456 564 616 629 715 738 908 930
delete:738     Traverse: 36 63 67 143 150 169 265 343 347 456 564 616 629 715 908 930
delete:150     Traverse: 36 63 67 143 169 265 343 347 456 564 616 629 715 908 930
delete:629     Traverse: 36 63 67 143 169 265 343 347 456 564 616 715 908 930
delete:265     Traverse: 36 63 67 143 169 343 347 456 564 616 715 908 930
delete:343     Traverse: 36 63 67 143 169 347 456 564 616 715 908 930
delete:456     Traverse: 36 63 67 143 169 347 564 616 715 908 930
delete:63      Traverse: 36 67 143 169 347 564 616 715 908 930
delete:347     Traverse: 36 67 143 169 564 616 715 908 930
delete:143     Traverse: 36 67 169 564 616 715 908 930
delete:564     Traverse: 36 67 169 616 715
delete:908     Traverse: 36 67 169 616 715
delete:930     Traverse: 36 67 169 616 715
delete:616     Traverse: 36 67 169 715
delete:715     Traverse: 36 67 169
delete:169     Traverse: 36 67
delete:36      Traverse:

我查了我的教科书并在网上搜索过,但仍然没有解决。
我希望你能帮助我。非常感谢!以下是完整代码:https ://paste.ubuntu.com/p/SD3pDnYNJY/

标签: c++data-structuresavl-tree

解决方案


推荐阅读