> 文章列表 > 【LeetCode】剑指 Offer(10)

【LeetCode】剑指 Offer(10)

【LeetCode】剑指 Offer(10)

目录

题目:剑指 Offer 27. 二叉树的镜像 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过啦!!!

题目:剑指 Offer 28. 对称的二叉树 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过啦!!!

写在最后:


 

题目:剑指 Offer 27. 二叉树的镜像 - 力扣(Leetcode)

【LeetCode】剑指 Offer(10)

题目的接口:

/* Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:TreeNode* mirrorTree(TreeNode* root) {}
};

解题思路:

递归遍历二叉树每个节点的左右孩子

然后自下而上依次交换左右孩子。

如果到空就返回。

代码:

/* Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:TreeNode* mirrorTree(TreeNode* root) {//遇到空返回if(root == nullptr){return nullptr;}//找左孩子TreeNode* left = mirrorTree(root->left);//找右孩子TreeNode* right = mirrorTree(root->right);//交换左右孩子root->left = right;root->right = left;//返回交换后的根节点return root;}
};

过啦!!!

【LeetCode】剑指 Offer(10)

题目:剑指 Offer 28. 对称的二叉树 - 力扣(Leetcode)

【LeetCode】剑指 Offer(10)

题目的接口:

/* Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:bool isSymmetric(TreeNode* root) {}
};

解题思路:

递归遍历二叉树,

如果二叉树为空,返回true,

我一开始是返回false,然后测试的时候,

测试用例返回的是true,

我就根据题意写代码了。

注意一下空指针的访问问题,

想个办法判断一下,

再比较是否镜像对称即可。

代码:

/* Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:bool is_Symmetric(TreeNode* left, TreeNode* right){//如果左右孩子都为空,证明递归完了,返回trueif(left == nullptr && right == nullptr){return true;}//如果孩子其中有一个为空,返回false(如果不提前判断,之后比较时会错误使用空指针)if(!left || !right){return false;}//比较是否镜像对称if(left->val != right->val){return false;}//递归搜索return is_Symmetric(left->left, right->right) && is_Symmetric(right->left, left->right);}bool isSymmetric(TreeNode* root) {//如果是空树,也是对称(测试用例告诉我的)if(root == nullptr){return true;}//递归搜索左右孩子return is_Symmetric(root->left, root->right);}
};

过啦!!!

【LeetCode】剑指 Offer(10)

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果喜欢本文的话,欢迎点赞和评论,写下你的见解。

如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。

之后我还会输出更多高质量内容,欢迎收看。