递归实现,直接放代码,有兴趣的可以看我后面的详细解析!

//将树B的所有节点的左,右子树进行交换
void Swap(BiTree &T){BiTree temp;if(T){Swap(T->lchild);Swap(T->rchild);temp=T->lchild;T->lchild=T->rchild;T->rchild=temp;}
}

解析注:1对应的49,2->50,3->51,想要看图解过程的直接跳过调试解析
1.这段代码是递归实现的,对于我来说有一些难度,我们先画一棵简单的二叉树,做递归步骤实验。看递归是如何运作的,如下一棵二叉树:

用vc6进行调试,第1步(此时的T指向节点1):

第2步(T即将进入了swap函数):

第3步(T指向节点2)

第4步(T符合条件,继续进入函数)

第5步(T指向空,因为上一个节点2没有左孩子)

第6步(此时T不符合条件,然后退出上一个进入的函数,也就是T回退到指向节点2的时候,并走向第二个处理函数)

第7步(进入函数,T依然指向空,因为还是节点2的右孩子为空):

第8步(回退到指向节点2,此时进行经典节点交换,也就是2的左右孩子相互交换,虽然为空,但是计算机是处理了的):

第9步(此时节点2处理完毕,T回退到上一代,指向节点1,并进入对应的第二个函数)

第10步(此时T指向节点3,):

第11步(然后在此节点上,又进行对应的两个函数,和节点2的过程一样,处理完成后T回退到节点1,执行交换函数,1与3相互交换,简单的二叉树交换就完成了。

3.图解递归(简单二叉树)

数据结构之---交换左右子树相关推荐

  1. 数据结构——二叉树交换左右子树位置(C语言)

    交换二叉树的左右子树 #include<stdio.h> #include<stdlib.h> #include<queue> #include <iostr ...

  2. 数据结构——交换左右子树

    递归--层次遍历-交换左右子树算法 思路: 与先序递归遍历类似 1如果有子树,交换这个节点的左右子树(和交换两个变量的值一样) 2再递归这个节点的左子树,右子树: #include<stdio. ...

  3. 二叉树交换左右子树的递归与非递归算法

    在学习二叉树的相关基本操作时,很多时候都需要运用递归,递归在学习的数据结构与算法中显得非常重要. 递归算法 recursion algorithm在计算机科学中是指一种通过重复将问题分解为同类的子问题 ...

  4. 二叉树镜像,交换左右子树

    使用递归的思想实现

  5. 数据结构——二叉树的递归算法

    二叉树的结构定义: typedef struct BiNode {TElemType data;struct BiNode *lchild;struct BiNode *rchild; }BiNode ...

  6. 数据结构:(翻转二叉树) 若二叉树采用二叉链表作存储结构,要交换其所有分支结点的左右子树的位置,采用()遍历方法最合适

    题目 若二叉树采用二叉链表作存储结构,要交换其所有分支结点的左右子树的位置,采用()遍历方法最合适?(北京航空航天大学1999,北京工业大学2016) A. 前序 B. 中序 C. 后序 D. 层次 ...

  7. 交换二叉树的每个节点的左右子树

    题目:试编写一个算法将一颗二叉树的所有节点的左右子树进行交换. 分析:         我们仍然可以采用递归的方式进行交换. 代码如下: struct biTree {char data;struct ...

  8. 3003基于二叉链表的二叉树左右子树的交换

    描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法交换该二叉树的左右孩子. 输入 多组数据.每组数据一行,为二叉树的先序序列(序列中元素为'0'时,表示该结点为空) ...

  9. MySQL索引相关的数据结构和算法

    索引相关的数据结构和算法 通常我们所说的索引是指B-Tree索引,它是目前关系型数据库中查找数据最为常用和有效的索引,大多数存储引擎都支持这种索引.使用B-Tree这个术语,是因为MySQL在CREA ...

最新文章

  1. Linux下的示例程序
  2. android 决TextView中MaxLines与ellipsize=end冲突问题
  3. Java并发——结合CountDownLatch源码、Semaphore源码及ReentrantLock源码来看AQS原理
  4. 工程实践中最常用的10大数据结构与算法讲解
  5. 21. Magento 创建新闻模块(2)
  6. configure: error: gperf is needed
  7. java 微博 api_Java使用新浪微博API开发微博应用的基本方法
  8. hustoj mysql_hustoj 管理员和后台设置
  9. 紧固件基础知识之规格篇和功能篇
  10. 楼梯计算机公式,楼梯踏步数计算公式是什么
  11. 上海第二工业大学计算机应用技术专业,2019上海第二工业大学专业排名
  12. 南京大学交叉培养计算机与金融招生人数,教务处组织召开计算机与金融工程实验班师生见面会...
  13. 台湾大学林轩田机器学习技法课程学习笔记6 -- Support Vector Regression
  14. 黑马程序员_毕向东_JavaScript视频教程--学习笔记
  15. BlueStacks不仅支持x86和ARM处理器,新版BlueStacks并不是单纯的实现虚拟化,而是运行整个Android系统
  16. 1_01李婉玲_数据结构_1012
  17. php年会总结,2019年终总结(示例代码)
  18. 个人官网导航网址放旗下网站源码
  19. 全国计算机化学年会,俞汝勤院士获中国化学会首届计算机化学终身成就奖
  20. 震惊!全球100强零部件供应商名单中有66家都是QAD客户

热门文章

  1. Bootstrap系列之关闭图标
  2. 贝叶斯分类器原理——学习笔记
  3. Stripe支付简介和前端js调用
  4. CAD关于文字样式得到所有文字样式操作(com接口c#语言)
  5. WIFI 动态频率选择DFS测试介绍
  6. Cypress 一些鼠标事件
  7. 不学习的日子感觉很的空虚
  8. 在办公室吃东西的同事,长点心吧!
  9. 一个公司好坏,我会做5个思考就知道了!
  10. 手握智算中心“绿洲”,毫末跑在中美自动驾驶长跑第一线