(精)(递归遍历的延伸)交换二叉树的左右子树
Posted 多情剑客无情剑;
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(精)(递归遍历的延伸)交换二叉树的左右子树相关的知识,希望对你有一定的参考价值。
给这个函数传的是指针,如果传整个结构,参数堆栈的效率较低
悟:单链表,恋栈,链队,二叉树的链式存储,传递的参数都是指针
顺序栈--顺序表-循环队列-传递的都是整个结构进去
做题一定要经过自己动脑,不要去看答案而试图去记住答案,一定要自己代码一行一行的写,数学题一步一步的写,经过自己深入动脑,这样才能理解好问题
完全自己研发出来,和二叉树的遍历基本相似
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了这个二叉树,指向了同一棵二叉树
以上是关于(精)(递归遍历的延伸)交换二叉树的左右子树的主要内容,如果未能解决你的问题,请参考以下文章