数据结构中有一种平衡搜索树,在平衡树中,为了保证任意节点的平衡因子的绝对值不超过2,成为平衡树,就需要对树进行降高度的操作
在降高度的操作中,有几种旋转方式,左单旋,右单旋,左右单旋以及右左单旋。
接下来,我们就来分析一下这几种旋转:
左单旋:
在左单旋中:旋转的时候,使subRL作为parent的右节点,而parent自己作为subR的左节点,让subR作为父节点。
右单旋:
在右单旋中:旋转的时候,使subLR作为parent的左节点,而parent自己作为subL的右节点,让subL作为父节点。
左右单旋:
在左右单旋中:
首先,是左单旋:让节点b作为subL的右节点,而subL作为subLR的左节点,然后subLR自己作为parent的 左节点;
然后,是右单旋:让parent作为subLR的右节点,subLR自己作为父节点。
右左单旋:
在右左单旋中:
首先,是右单旋:让b节点作为subR的左节点,subR作为subRL的右节点,然后subRL自己作为parent的右节点;
然后,是左单旋:让parent作为subRL的左节点,subRL自己作为父节点。
要注意的是,在旋转的时候,平衡因子也一定要更新,而平衡因子的修改与插入节点的位置有很大的关系!