现在慢慢的喜欢上了编程,也开始写一些二叉树的算法。现在自己的编程功底还不好,一般是先看一下别人的代码在凭自己的理解来写。当然,这肯定离自己的要求还差很远,但是我相信自己慢慢在进步。而且主要是自己已经开始喜欢,那么加油吧!相信一切会更好。今天本来打算写个DSW算法,但是今天一天才完成右旋的工作。主要是对指针和物理过程理解不清楚,其中两者是关联的。主要原因还是归于物理过程不清楚,因此,在后面还需要继续努力。现在把今天写的一点程序总结一下,也算温故而知新吧。
void rotateRight(node *&par,node *&gra)
{//右旋,“功能要明确”。
if(gra==NULL){
node *root=par;
gra=par->lnode;
par->lnode=gra->rlonde;
gra->rlonde=root;
root=gra;
par=gra;
gra=NULL;
}
else{
node *ch;
ch=par->lnode;
par->lnode=ch->rlonde;
ch->rlonde=gra->rlonde;
gra->rlonde=ch;
par=ch;
}
}
void backBone(node *&root)
{
node *p;
node *temp=root;
while(temp!=0){
if(temp->lnode!=NULL){
if(temp==root)//对于根节点,添加的处理
p=NULL;
rotateRight(temp,p);