数据结构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;
}

算法分析(递归生成)

  1. 首先,进行交换的条件,根节点首先不为空,为空的话是没有左右孩子的,也没有交换的必要了,其次即使根节点不为空,但其没有左右孩子,也就是叶节点,那么这样的结点也没有交换的必要,所以此处的条件为 T!=NULL&&(T->lchild!=NULL||T->rchild!=NULL)
  2. 在先决条件下,递归进行交换,如果他有左右孩子,那么就继续向下前进,直到不满足先决条件时,返回此时其结点的地址T,用t1保存,退出上一层函数,返回上一层递归继续进行下面的右孩子的递归,同样的得到其右孩子结点的地址T,用t2保存,然后分别进行交换,以此递归进行交换。完成二叉树左右子树 的交换。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章题目:数据结构c/c++,递归实现二叉树左右子树交换-创新互联
链接URL:http://myzitong.com/article/ceipji.html