一,以下的程序是算法导论中的源码,我刚开始看这个左旋的时候看了很久,很是不理解,它到底是怎样旋转的,看图容易理解想要记好程序我感到比较困难。书上有几句是关键点:左旋以x到y的链为轴,使y成为该孩子树新的根结点,x成为y的左孩子,y的左孩子成为x的右孩子;同理右旋以y到x的链为轴,使x为该孩子数的新结点,y成为x的右孩子,x的右孩子成为y的左孩子。左旋和右旋是以指针的形式进行的,具体操作请看到最后:
二,这是我画的指针结构,如图所示:找到x结点,定义一个结点y,第一步为:该y结点指向x的右子数,第二步为:把y的左子数变成x的右子数,第三步为:把y的父结点指向x的父结点,之后判断x为其父结点的左子数还是右子数,然后用y进行替换。第四步:最后使x成为y的左子数即可。若有不对,还请指教,谢谢!