题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
实现思想
其实本题很巧妙,只需要判断是否为空,然后不为空就将左右子树交换(注意交换的是左右子树,不是左右子节点上的数值),然后进行递归调用交换函数即可。
算法实现
/*
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 *temp = pRoot->left;
pRoot->left = pRoot->right;
pRoot->right = temp;
Mirror(pRoot->left);
Mirror(pRoot->right);
}
};
运行截图

总结
注意:
① 函数是void类型的函数,没有返回类型,所以在return的时候不要返回任何东西。
② 树上节点的交换会带动以该节点为根的全部子节点的交换。当遍历所有节点,并交换该节点的左右子树(也可以叫做左右子节点)时,就会得到镜像树。

本文介绍了一种巧妙的方法,通过递归交换二叉树的左右子树来生成其镜像。实现过程中,首先判断节点是否为空,然后交换左右子树,最后递归调用以完成整个树的镜像变换。
1037

被折叠的 条评论
为什么被折叠?



