我已经用C ++中的旧二进制树构建了一个AVL树用于练习并且它无法正常工作。我认为它可能无法正确更新节点的高度,但我无法找出问题的根源(我90%确定它与辅助函数getHeight,setHeight,getBalance有关) 。
一些示例测试运行..:
添加6,3,4导致右旋转它应该导致RL旋转
类似地,添加20,30,25会导致LL旋转,因为它应该导致LR旋转
添加20,30,10,5,6导致两个单独的右旋转,它应该导致RL旋转
rake db:migrate
我很感激有关进一步解决这个问题的任何提示/帮助。如果我能提供更多信息来帮助我,请告诉我。
谢谢。