伸展树的展开的理解

发布于 2022-09-03 13:12:46 字数 314 浏览 10 评论 0

java实现伸展树

中的splay(Comparable key)方法,第198行:

l.right = t;           /* link left */
l = t;
t = t.right;

不能理解l=t;前面的l.right = t不就是被覆盖掉了吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

习惯成性 2022-09-10 13:12:46

这里只是l和t这两个引用在移动:

  1. 假设l原来指向节点a,a的左节点和右节点分别是a1和a2。t原来指向节点b,b的左节点和右节点分别是b1和b2

  2. l.right = t,l是指向a的,这个操作也就是a的右节点变成了b,l依然指向a,t依然指向b

  3. l = t,l改成指向b,t没变也指向b

  4. t = t.right,t原来指向b,那么现在改成指向b的右节点,即b2

这么一通下来后a的左节点没变依然是a1,右节点变成b,而a2已经和a断开了。相当于把b这课子树移到了a的右边。
同时l和t的指向改变了,l指向b,t指向b2

哎呦我呸! 2022-09-10 13:12:46

clipboard.png
l = t;
看成:
l = l.right;
指针的移动,方便一次迭代.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文