题目的意思是判断一棵树是否是镜像的,此处镜像指的是中心对称的树。
思路:一棵树如果是镜像的,那么它的左右节点就得是镜像的。左右节点是镜像的,那么左节点的左子树和右节点的右子树必须得是镜像的,左节点的右子树和右节点的左子树必须得是镜像的,后面两对节点是否是镜像的判断方式和判断左右节点是否是镜像的判断方式一样,因此采用递归的方法。
class Solution {
public:
bool dfs(TreeNode* root1, TreeNode* root2)
{
if(!root1 && !root2)
return true;
if(!root2 || !root1 || root1->val!=root2->val)
return false;
return dfs(root1->left, root2->right) && dfs(root1->right, root2->left);
}
bool isSymmetric(TreeNode* root) {
if(!root)
return true;
else
return dfs(root->left, root->right);
}
};
照顾好自己的身体,控制好自己的情绪,加油!
以上就是关关关于这道题的总结经验,希望大家能够理解,有什么问题可以在我们的专知公众号平台上交流或者加我们的QQ专知-人工智能交流群 426491390,也可以加入专知——Leetcode刷题交流群(请先加微信小助手weixinhao: Rancho_Fang)。 同时请,关注我们的公众号,获取最新关于专知以及人工智能的资讯、技术、算法等内容。扫一扫下方关注我们的微信公众号。