题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5
这题主要还是递归。顺便记录一下一个知识点。
不带返回值的return语句只能用于返回类型为void的函数,在返回类型为void的函数中return语句不是必要的,隐式的return发生函数的最后一个语句完成时。一般情况下,返回类型为void的函数使用return语句是为了引起函数的强制结束,这种return的用法类似于循环结构中的break语句。
/*
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 != NULL)
Mirror(pRoot->left);
if(pRoot->right != NULL)
Mirror(pRoot->right);
}
};