剑指offer-算法题练习:part20 二叉树的镜像
2016-10-06 20:59
633 查看
剑指offer-算法题练习:part20 二叉树的镜像
题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:源二叉树
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5
<解析>
code1——递归法
code2——非递归
/*
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 * p;
TreeNode* tmp;
stack<TreeNode*> stk;
stk.push(pRoot);
while(!stk.empty()){
p = stk.top();
stk.pop();
if(p->left != NULL || p->right != NULL){
tmp = p->left;
p->left = p->right;
p->right = tmp;
}
if(p->left!=NULL) stk.push(p->left);
if(p->right!=NULL) stk.push(p->right);
}
}
};
题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:源二叉树
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5
<解析>
code1——递归法
/* 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) { TreeNode * p=NULL; if(pRoot!=NULL) { p = pRoot->left; pRoot->left = pRoot->right; pRoot->right = p; if(pRoot->left != NULL) Mirror(pRoot->left); if(pRoot->right!= NULL) Mirror(pRoot->right); } } };
code2——非递归
/*
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 * p;
TreeNode* tmp;
stack<TreeNode*> stk;
stk.push(pRoot);
while(!stk.empty()){
p = stk.top();
stk.pop();
if(p->left != NULL || p->right != NULL){
tmp = p->left;
p->left = p->right;
p->right = tmp;
}
if(p->left!=NULL) stk.push(p->left);
if(p->right!=NULL) stk.push(p->right);
}
}
};
相关文章推荐
- 剑指offer-算法题练习:part4 重建二叉树
- 剑指offer-算法题练习:part14 c++多线程—2个线程并发售票系统-烽火众智
- 剑指offer-算法题练习:part17 反转链表
- 剑指offer-算法题练习:part15 调整数组顺序使奇数位于偶数前面
- 剑指offer-算法题练习:part7 斐波那契数列-斐波那契数列问题
- 剑指offer-算法题练习:part6 旋转数组的最小数字
- 剑指offer-算法题练习:part11 二进制中1的个数
- 剑指offer-算法题练习:part18 合并两个排序的链表
- 剑指offer-算法题练习:part21 顺时针打印矩阵
- 剑指offer-算法题练习:part16 链表中倒数第k个结点
- 剑指offer-算法题练习:part22 包含min函数的栈
- 剑指offer-算法题练习:part12 数值的整数次方
- 剑指offer-算法题练习:part8 跳台阶-斐波那契数列问题
- 剑指offer-算法题练习:part9 变态跳台阶-斐波那契数列问题
- 【剑指offer】十二,二叉树的镜像
- 【剑指Offer学习】【面试题19 :二叉树的镜像】
- [剑指offer][面试题19]二叉树的镜像
- 剑指 offer:二叉树的镜像
- 剑指Offer-二叉树的镜像
- 【剑指Offer面试题】 九度OJ1521:二叉树的镜像