【LeetCode】剑指 Offer(10)
目录
题目:剑指 Offer 27. 二叉树的镜像 - 力扣(Leetcode)
题目的接口:
解题思路:
代码:
过啦!!!
题目:剑指 Offer 28. 对称的二叉树 - 力扣(Leetcode)
题目的接口:
解题思路:
代码:
过啦!!!
写在最后:
题目:剑指 Offer 27. 二叉树的镜像 - 力扣(Leetcode)
题目的接口:
/* 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;}
};
过啦!!!
题目:剑指 Offer 28. 对称的二叉树 - 力扣(Leetcode)
题目的接口:
/* 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);}
};
过啦!!!
写在最后:
以上就是本篇文章的内容了,感谢你的阅读。
如果喜欢本文的话,欢迎点赞和评论,写下你的见解。
如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。
之后我还会输出更多高质量内容,欢迎收看。