剑指offer-二叉树的镜像

来源:互联网 发布:淘宝如何贷款 编辑:程序博客网 时间:2024/05/29 02:37

 一、问题描述

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

输入描述:
二叉树的镜像定义:源二叉树         8       /  \      6   10     / \  / \    5  7 9 11    镜像二叉树        8       /  \      10   6     / \  / \    11 9 7  5

二、思路

1、判断根节点是否为空,判断左右子树是否同时为空,如果为空直接返回;

2、交换左右子树;

3、如果左子树不为空,递归交换左子树的左右子树,如果右子树不为空,递归交换右子树的左右子树。

三、代码

/*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;        if(pRoot -> left == NULL && pRoot -> right == NULL) return;        TreeNode *temp = pRoot -> left;        pRoot -> left = pRoot -> right;        pRoot -> right = temp;        if(pRoot -> left) Mirror(pRoot -> left);        if(pRoot -> right) Mirror(pRoot -> right);    }};

0 0
原创粉丝点击