二叉树类型题目最后用的解题方法就是递归。
求镜像二叉树的过程是:
选择前序遍历(在根节点做处理)这棵树的每个节点,如果遍历到的该节点有子节点,就交换他的两个子节点。
当所有的节点交换完毕后,就可以生成镜像树了。
二叉树结构体:
struct TreeNode {
int val;//节点值
TreeNode* left;//左节点指针
TreeNode* right;//右节点指针
TreeNode(int x):val(x),left(NULL),right(NULL){
}
};
代码:
void Mirror(TreeNode *pRoot) {
if( (pRoot == NULL) || (pRoot->left == NULL && pRoot->right == NULL ))
return ;//判断节点是否为空,以及该节点是否存在子节点,若不存在则返回
//交换该节点的左子树和右子树
TreeNode *ptemp = pRoot->left;
pRoot->left = pRoot->right;
pRoot->right = ptemp;
if(pRoot->left)
Mirror(pRoot->left);
if(pRoot->right)
Mirror(pRoot->right);
}
参考:《剑指offer》、牛客网
ps:只是学习记录过程,如有侵权请指出,定会修正!若有错误,也欢迎指出!