数据结构c/c++,递归实现二叉树左右子树交换-创新互联
树的存储结构
创新互联服务项目包括清远网站建设、清远网站制作、清远网页制作以及清远网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,清远网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到清远省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
typedef char ElemType;
typedef struct BiTNode
{ ElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode, *BiTree;
代码实现
传入的参数T表示你要进行交换的二叉树根节点地址
BiTree BiTreeChange(BiTree T)
// 参数:二叉树根指针T
// 返回:二叉树根指针
{
BiTree pn,t1,t2;
if(T!=NULL&&(T->lchild!=NULL||T->rchild!=NULL))
{
t1=BiTreeChange(T->lchild);
t2=BiTreeChange(T->rchild);
T->lchild=t2;
T->rchild=t1;
// pn=t1;
// t1=t2;
// t2=pn; 如果只是这样交换,是无法
//改变左右孩子的,应该去改变T->lchild以及T->rchild
}
return T;
}
算法分析(递归生成)
- 首先,进行交换的条件,根节点首先不为空,为空的话是没有左右孩子的,也没有交换的必要了,其次即使根节点不为空,但其没有左右孩子,也就是叶节点,那么这样的结点也没有交换的必要,所以此处的条件为 T!=NULL&&(T->lchild!=NULL||T->rchild!=NULL)
- 在先决条件下,递归进行交换,如果他有左右孩子,那么就继续向下前进,直到不满足先决条件时,返回此时其结点的地址T,用t1保存,退出上一层函数,返回上一层递归继续进行下面的右孩子的递归,同样的得到其右孩子结点的地址T,用t2保存,然后分别进行交换,以此递归进行交换。完成二叉树左右子树 的交换。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前题目:数据结构c/c++,递归实现二叉树左右子树交换-创新互联
本文来源:http://abwzjs.com/article/ceipji.html