题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:源二叉树
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5AC代码如下:
先用很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;
}

本文介绍了一种通过递归实现二叉树镜像变换的方法。该方法通过对二叉树节点进行交换处理,将原始二叉树转换为其镜像形式。文章提供了完整的C++代码示例,并展示了如何对给定的二叉树进行镜像变换。
2163

被折叠的 条评论
为什么被折叠?



