题目描述

操作给定的二叉树,将其变换为源二叉树的镜像。

输入描述:
    	    8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5

【思路1】递归,左右孩子交换再分别递归左右子树

 /*
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 == NULL)
return ;
TreeNode *temp = pRoot->left;
pRoot->left = pRoot->right;
pRoot->right = temp;
Mirror(pRoot->left);
Mirror(pRoot->right);
}
};

【思路2】非递归,栈实现

 /*
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 == NULL)
return ;
stack<TreeNode*> StackNode;
StackNode.push(pRoot);
while(!StackNode.empty()){
TreeNode* tree = StackNode.top();
StackNode.pop();
if(tree->left || tree->right){
TreeNode* temp = tree->left;
tree->left = tree->right;
tree->right = temp;
}
if(tree->left)
StackNode.push(tree->left);
if(tree->right)
StackNode.push(tree->right);
}
}
};

最新文章

  1. Mono产品生命周期
  2. The .NET of Tomorrow
  3. IIC
  4. 关于NodeJS的思考
  5. App压力测试整理
  6. 人工神经网络(ANN)
  7. 传统解析xml的方式
  8. C++ Const成员函数
  9. CSS备忘-1
  10. iOS越狱包
  11. Debian 9 美化界面
  12. 爬虫--Scrapy-CrawlSpider&amp;基于CrawlSpide的分布式爬虫
  13. 读取配置文件-AppConfig
  14. Python sqrt() 函数
  15. Spring注入方式(2)
  16. Scrum 项目6.0-展示Sprint回顾的过程及成果。
  17. python网络编程之协程
  18. Java开发工程师(Web方向) - 02.Servlet技术 - 第4章.JSP
  19. P1135 奇怪的电梯
  20. 【OpenJudge9275】【Usaco2009 Feb】【递推】Bullcow

热门文章

  1. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--L-用来作弊的药水
  2. python list统计
  3. 转:深入理解jvm
  4. iframe中的页面在IE全屏模式下没有滚动条,正常模式有滚动条
  5. html5 获取和设置data-*属性值的四种方法讲解
  6. SpringMVC+Mybatis框架搭建
  7. Leecode刷题之旅-C语言/python-111二叉树的最小深度
  8. array_x
  9. dns文件
  10. Matplotlib 子图的创建