首页 > 代码库 > (精)(递归遍历的延伸)交换二叉树的左右子树
(精)(递归遍历的延伸)交换二叉树的左右子树
给这个函数传的是指针,如果传整个结构,参数堆栈的效率较低
悟:单链表,恋栈,链队,二叉树的链式存储,传递的参数都是指针
顺序栈--顺序表-循环队列-传递的都是整个结构进去
做题一定要经过自己动脑,不要去看答案而试图去记住答案,一定要自己代码一行一行的写,数学题一步一步的写,经过自己深入动脑,这样才能理解好问题
完全自己研发出来,和二叉树的遍历基本相似
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了这个二叉树,指向了同一棵二叉树
(精)(递归遍历的延伸)交换二叉树的左右子树
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。