剑指offer-算法题练习:part20 二叉树的镜像

来源:互联网 发布:腾讯文件管理器源码 编辑:程序博客网 时间:2024/06/01 08:49

剑指offer-算法题练习:part20 二叉树的镜像

题目描述

操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:源二叉树
    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);        }           }};

0 0
原创粉丝点击