跳转至

树旋转

树旋转是对 二叉搜索树 的一种重构操作,不改变树的性质( 各结点值的大小关系不变,即 中序不变 ),但会改变树的形状

d

在 a 图中,由树的性质容易得到 \(v<f<fr<g\)

如果要将树重构成一颗以 \(f\) 为根的树,由上面的不等式容易知道,比 \(f\) 小的 \(v\) 应该在 \(f\) 的左子树,比 \(f\) 大的 \(fr\)\(g\) 应该在 \(f\) 的右子树,又 \(fr<g\) ,所以 \(fr\) 应该作为 \(g\) 的左孩子

重构后的树如图 b 所示,这一重构操作即为 树右旋

我们约定 \(g\) 为旋转的 ,则上面的操作就是 对根 \(g\) 右旋

类似可以得到 树左旋(如图 c、d 所示)

下面是 Wikipedia 对树旋转的动图演示:

d

评论