码迷,mamicode.com
首页 > 其他好文 > 详细

(精)(递归遍历的延伸)交换二叉树的左右子树

时间:2017-06-20 22:18:56      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:变量   tno   数学题   oid   问题   font   队列   树的遍历   image   

给这个函数传的是指针,如果传整个结构,参数堆栈的效率较低

悟:单链表,恋栈,链队,二叉树的链式存储,传递的参数都是指针

顺序栈--顺序表-循环队列-传递的都是整个结构进去

 

做题一定要经过自己动脑,不要去看答案而试图去记住答案,一定要自己代码一行一行的写,数学题一步一步的写,经过自己深入动脑,这样才能理解好问题

 完全自己研发出来,和二叉树的遍历基本相似

void exchange99(BTNode *T)
{   BTNode *b;   //临时作为交换的变量
    if(T==NULL || (T->lchild==NULL&&T->rchild==NULL) )
        return; //为空或者是叶子结点-就不用交换了
    b=T->lchild;
    T->lchild = T->rchild;
    T->rchild = b ;

    exchange99(T->lchild);
    exchange99(T->rchild);
}

技术分享

 

 

void exchange0(BTNode *T , BTNode *&b)
{
    if(T==NULL)
        return;
    b=T;
    exchange(T->lchild,b->rchild);
    exchange(T->rchild,b->lchild);
}

技术分享

 

void exchange(BTNode *T , BTNode *&b)
{
    if(T==NULL)
        return ;
    b=T;
    exchange(T->lchild,b->lchild);
    exchange(T->rchild,b->rchild);
}

直接b=T就copy了这个二叉树,指向了同一棵二叉树

 

(精)(递归遍历的延伸)交换二叉树的左右子树

标签:变量   tno   数学题   oid   问题   font   队列   树的遍历   image   

原文地址:http://www.cnblogs.com/cs-lcy/p/7056281.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!