平衡搜索树的左单旋、右单旋、左右双旋、右左双旋
2018-02-24 11:03
337 查看
本文要点:平衡搜索树的左单旋、右单旋、左右双旋、右左双旋 在平衡搜索树中进行插入结点时,有可能会破坏整棵树的平衡。为了保证平衡不被破坏,就要对一些节点进行旋转,从而来降低树的高度,这样也能保证树的平衡。一、左单旋:(上图中的▲结点有可能是NULL,也有可能不为空。。。下同)从图中可以看出,进行左单旋时,只是改变了parent的右指针以及subR的左指针指向。将subR的左子树(subRL)作为parent的右子树,并让parent作为subR的左子树。很明显,这样做就降低了这棵树的高度。进行旋转时需要注意的两点:1.改变subRL->_parent指向时,需要判断subRL是否为NULL,如果为空,就不能对其解引用。2.parent是否为根节点?如果parent为根节点,那么旋转完成后只需将subR赋给根节点即可;但如果parent不为根节点,即parent是某一节点ppNode的子树,就要判断parent在ppNode的左还是右,这样才能确定subR的位置。 ?
二、右单旋:同左单旋一样,右单旋转是将subL的右子树结点赋给parent的左指针,并让parent自己作为subL的右子树。 ?
三、左右双旋:了解了单旋之后,双旋就比较简单,只是进行了两步单旋而已 ?
四、右左双旋: ?
相关文章推荐
- Flash中音量和左右声道平衡的控制(2)
- 平衡搜索二叉树的python实现
- 平衡搜索树-AVLTree
- 平衡搜索树—红黑树RBTree
- java平衡搜索树AVL实现
- Flash中音量和左右声道平衡的控制(3)
- listBox 搜索左右移动
- MIT:算法导论——10.平衡搜索树-红黑树
- 平衡搜索树之AVLTree
- 折半搜索+状态压缩【P3067】 [USACO12OPEN]平衡的奶牛群Balanced Cow S…
- 李开复新年寄语:被商业利益左右的搜索会失去网民信任
- [LeetCode] 从排序的单链表到平衡搜索二叉树
- hdu5323 给出左右边界,求出线段树最小的大小(暴力dfs搜索)
- 浅谈平衡搜索树之AVL树
- 二叉平衡搜索树——AVL树
- 平衡搜索树—AVLTree
- AVLTree——平衡搜索树
- 平衡搜索树-AVLTree的简单实现
- 有序链表转二叉平衡搜索树(BST)
- 【数据结构】中平衡搜索树的旋转方式解析