发现CSDN的代码编辑器还是有些问题,空格处理不好,导致我注释中的树形错乱了...
不过没有大关系,应该抓起旁边的纸边看边画就能明白。
在网上找splayTree的源码学习,发现凭自己的实力还真的看不懂.....
幸好在家里翻到了古老的数据结构教材。这才明白。
至于不使用添加父节点或者采用递归栈等方式的原因在于:空间消耗太大。
另外递归栈也不好调试
这个top-down splay的方法消耗空间为O(1),带来的效果却和添加父节点类似,没有使用递归的方法。
至于具体的方法,在代码的注释里。
这里为了编代码方便就没有将treeNode 类中的成员变量私有化。
另外的BinaryTree的代码在以前的blog中。
这个splayTree还是较为完整的,至少比Apache中的splayTree完整些。现在我依旧不明白为什么Apache中的内存管理使用的是splayTree,而且splayTree还没有delete函数。难道内存管理的东西没有必要删除吗?
思考中....