原创博文,转载请注明出处!github地址  博客文章索引地址

1.题目

      输入一颗二叉树,将二叉树变换为原二叉树的镜像,如下图所示:

2.思路

  • 二叉树有0个节点
  • 二叉树有1个节点
  • 二叉树有多个节点(普通二叉树和只有单侧子节点的二叉树)

二叉树有多个节点的思路:前序遍历二叉树的每个节点,如果遍历到的节点有子节点,则交换该节点的两个子节点。当交换完所有非叶子结点的左右节点之后,即得到二叉树的镜像。

3.code

/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
void Mirror(TreeNode *pRoot) {
// 空节点
if(pRoot==nullptr)
return; // 叶子结点
if(pRoot->left==nullptr&&pRoot->right==nullptr)
return; // 二叉树有多个节点时,交换当前节点的左右节点
TreeNode* temp = pRoot->left;
pRoot->left = pRoot->right;
pRoot->right = temp; // 二叉树的遍历
Mirror(pRoot->left);
Mirror(pRoot->right);
}
};

最新文章

  1. 办公大楼3D指纹门禁系统解决方案
  2. yum downloadonly
  3. vb.net 使用 Regex Replace 正则 替换 Html字串的table中tbody第一个tr下的td为th
  4. 统计机器翻译(SMT)步骤总结
  5. 行人检測之HOG特征(Histograms of Oriented Gradients)
  6. POJ1797 Heavy Transportation 【Dijkstra】
  7. js常用API 数据类型 基本类型,基本包装类型,引用类型 Object String Array Boolean Number Date Math
  8. 刨根究底字符编码之十三——UTF-16编码方式
  9. IBM的websphere MQ的c#使用(一)
  10. package.json包描述文件说明
  11. BZOJ4012[HNOI2015]开店——树链剖分+可持久化线段树/动态点分治+vector
  12. jdk8 永久代变更
  13. 消息中间件——kafka
  14. OpenCV 脸部跟踪(1)
  15. leecode刷题(8)-- 两数之和
  16. Android File类 根据官方文档理解
  17. 小程序App方法
  18. solr java api 使用solrj操作zookeeper集群中的solrCloud中的数据
  19. linux dd命令实例讲解
  20. 如何用 JavaScript 控制 Arduino?

热门文章

  1. parted 分区
  2. 梅森素数 判定总结 - Lucas-Lehmer算法 & Miller-rabin算法
  3. TSP - 状态压缩dp
  4. 简单描述DataAdapter、DataReader、DataSet、Datatable对比
  5. Ubuntu16.04 安装openssl
  6. 第八章:部署Tornado
  7. PHP 重载方法 __call()
  8. Nginx、Apache工作原理及Nginx为何比Apache高效
  9. poj1228稳定凸包
  10. css3 transform matrix矩阵的使用