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