[剑指Offer] 18.二叉树的镜像
2024-10-21 04:13:40
题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
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);
}
}
};
最新文章
- Mono产品生命周期
- The .NET of Tomorrow
- IIC
- 关于NodeJS的思考
- App压力测试整理
- 人工神经网络(ANN)
- 传统解析xml的方式
- C++ Const成员函数
- CSS备忘-1
- iOS越狱包
- Debian 9 美化界面
- 爬虫--Scrapy-CrawlSpider&;基于CrawlSpide的分布式爬虫
- 读取配置文件-AppConfig
- Python sqrt() 函数
- Spring注入方式(2)
- Scrum 项目6.0-展示Sprint回顾的过程及成果。
- python网络编程之协程
- Java开发工程师(Web方向) - 02.Servlet技术 - 第4章.JSP
- P1135 奇怪的电梯
- 【OpenJudge9275】【Usaco2009 Feb】【递推】Bullcow