题目在线测试连接:二叉树的镜像_牛客网 (nowcoder.com)
题目描述:
将给定的二叉树左右对称镜像
思路:向求解蓝框二叉树的镜像,可以先求将子节点交换,然后再去求子节点的镜像,直到当前节点为叶子节点
总结来说,还是分治的思想,将大问题化解为小问题,求整个树的镜像,我可以先求解子树的镜像,子树的镜像可以先求解子子树的镜像.....直到返回根节点
代码:
/*struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
void Mirror(TreeNode *pRoot) {
if(pRoot->left==nullptr)
return;
TreeNode *temp;
temp = pRoot->left;
pRoot->left = pRoot->right;
pRoot->right = temp;
Mirror(pRoot->left);
Mirror(pRoot->right);
}
但是这里存在一个内存的问题,答案正确,方法与他们通过的也无差距,
只是我判断的是否由子节点,没有即返回;别人判断的当前节点是否存在,不存在即返回
/*** 判断子节点 ***/
if(pRoot->left == nullptr)
return;
/*** 判断当前节点 ***/
if(pRoot == nullptr)
return;
先保存着,还望知道原因的大佬不吝赐教,回头明白了再来补充