您的位置:首页 > 职场人生

剑指offer面试题27:二叉树的镜像

2018-03-05 15:40 495 查看

题目描述

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

输入描述:

二叉树的镜像定义:源二叉树
8
/  \
6   10
/ \  / \
5  7 9 11
镜像二叉树
8
/  \
10   6
/ \  / \
11 9 7  5
AC代码如下:
先用很low的方法测试/*
二叉树镜面
1.功能测试: 根节点不动 所以不用重新申请一个根节点
但需要申请一个temp节点。用来存放交换
2.边界测试 输入的节点为nullptr的时候咋整
3.错误测试
思路:递归
*/

#include<iostream>
using namespace std;
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 *pNode)
{
if(pNode==NULL) //边界
return ;
if(pNode->left==NULL &&pNode->right==NULL)//只有一个节点
return ;
TreeNode *pTemp;//交换节点
pTemp=pNode->left;//交换三步
pNode->left=pNode->right;
pNode->right=pTemp;
if(pNode->left)
{
Mirror(pNode->left);
}
if(pNode->right)
{
Mirror(pNode->right);
}
}
};
/*
以下为测试代码
*/
int main()
{
Solution sol;
TreeNode *pRoot=new TreeNode(1);
pRoot->left=new TreeNode(2);
pRoot->right=new TreeNode(3);
cout<<"root:"<<pRoot->val<<"left:"<<pRoot->left->val<<"right:"<<pRoot->right->val<<endl;
sol.Mirror(pRoot);
cout<<"root:"<<pRoot->val<<"left:"<<pRoot->left->val<<"right:"<<pRoot->right->val<<endl;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: