考察二叉树的遍历。镜像对称,本解法使用的是前序遍历。
C++版
#include <iostream>
#include <algorithm>
using namespace std;
// 定义二叉树
struct TreeNode{
int val;
struct TreeNode* left;
struct TreeNode* right;
TreeNode(int val):val(val),left(nullptr),right(nullptr){}
};
// 其实使用的是前序遍历方法
void Mirror(TreeNode* pRoot){
if(pRoot == nullptr)
return ;
// 判断是否叶子节点,如果不是叶子节点,则需要镜像
if(pRoot->left == nullptr && pRoot->right == nullptr)
return ;
// 对称交换
TreeNode* pTemp = pRoot->left;
pRoot->left = pRoot->right;
pRoot->right = pTemp;
if(pRoot->left != nullptr)
Mirror(pRoot->left);
if(pRoot->right)
Mirror(pRoot->right);
}
int main()
{
char *p = "hello";
// p[0] = 'H';
cout<<p<<endl;
return 0;
}