巧记二叉数的左旋

一,以下的程序是算法导论中的源码,我刚开始看这个左旋的时候看了很久,很是不理解,它到底是怎样旋转的,看图容易理解想要记好程序我感到比较困难。书上有几句是关键点:旋以x到y的链为轴,使y成为该孩子树新的根结点,x成为y的左孩子,y的左孩子成为x的右孩子;同理旋以y到x的链为轴,使x为该孩子数的新结点,y成为x的右孩子,x的右孩子成为y的左孩子。左旋和右旋是以指针的形式进行的,具体操作请看到最后:

               

               634705-20151029224606013-99686402.png (640×428)

二,这是我画的指针结构,如图所示:找到x结点,定义一个结点y,第一步为:该y结点指向x的右子数,第二步为:把y的左子数变成x的右子数,第三步为:把y的父结点指向x的父结点,之后判断x为其父结点的左子数还是右子数,然后用y进行替换。第四步:最后使x成为y的左子数即可。若有不对,还请指教,谢谢!

                               

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值