我必须使用java实现splay树结构。给定一个名为 Node 的类,它具有:
- 左,右孩子
- 信息(一个整数)
- 节点的高度
我的作业包括创建“插入”方法。
我已经尝试了一些策略,但到目前为止还没有奏效,我试图通过获取代码而不是通过一些可以帮助我的想法来获得一些帮助。
所以我一开始的策略是实现一个递归方法,像二叉搜索树一样插入信息,然后展开(使用伪代码):
Node splay(Node a, int x):
if a.height >=3:{
if (there is a node from "a" with the structure of zigzig or zigzag with x info){
return a(do the rotation)}
}
else:{
return Node(splay(a.left,x),a.info,splay(a.right,x))}
我不完全确定这个想法是否适用于锯齿形和锯齿形。
另一方面,我没有节点父节点的信息,所以我在如何进行 zig 和 zag 旋转时遇到了麻烦,我尝试使用 a.height==1,但这会有问题