面试题27:二叉树的镜像

考察二叉树的遍历。镜像对称,本解法使用的是前序遍历。

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;
}

posted @ 2020-07-25 21:05  程序员曾奈斯  阅读(129)  评论(0编辑  收藏  举报